#![allow(clippy::unwrap_used, clippy::expect_used)]
use super::*;
use perl_tdd_support::must;
#[test]
fn test_string_x_number() {
let mut parser = Parser::new(r#"my $s = "x" x 3;"#);
let ast = must(parser.parse());
let sexp = ast.to_sexp();
assert!(sexp.contains("binary_x"), "Expected binary_x in: {sexp}");
}
#[test]
fn test_dash_x_80() {
let mut parser = Parser::new(r#"my $line = "-" x 80;"#);
let ast = must(parser.parse());
let sexp = ast.to_sexp();
assert!(sexp.contains("binary_x"), "Expected binary_x in: {sexp}");
}
#[test]
fn test_space_x_variable() {
let mut parser = Parser::new(r#"my $spaces = " " x $indent;"#);
let ast = must(parser.parse());
let sexp = ast.to_sexp();
assert!(sexp.contains("binary_x"), "Expected binary_x in: {sexp}");
}
#[test]
fn test_paren_list_x_number() {
let mut parser = Parser::new("my @copies = ($template) x 10;");
let ast = must(parser.parse());
let sexp = ast.to_sexp();
assert!(sexp.contains("binary_x"), "Expected binary_x in: {sexp}");
}
#[test]
fn test_variable_x_number() {
let mut parser = Parser::new("my $result = $str x 3;");
let ast = must(parser.parse());
let sexp = ast.to_sexp();
assert!(sexp.contains("binary_x"), "Expected binary_x in: {sexp}");
}
#[test]
fn test_print_ha_x_3() {
let mut parser = Parser::new(r#"print "ha" x 3;"#);
let ast = must(parser.parse());
let sexp = ast.to_sexp();
assert!(sexp.contains("binary_x"), "Expected binary_x in: {sexp}");
}
#[test]
fn test_x_not_confused_with_variable() {
let mut parser = Parser::new("my $x = 5;");
let ast = must(parser.parse());
let sexp = ast.to_sexp();
assert!(!sexp.contains("binary_x"), "Should not be binary_x in: {sexp}");
}
#[test]
fn test_x_precedence_with_addition() {
let mut parser = Parser::new(r#"my $r = "ab" x 2 + 1;"#);
let ast = must(parser.parse());
let sexp = ast.to_sexp();
assert!(sexp.contains("binary_x"), "Expected binary_x in: {sexp}");
assert!(sexp.contains("binary_+"), "Expected binary_+ in: {sexp}");
}
#[test]
fn test_x_with_concat() {
let mut parser = Parser::new(r#"my $r = "a" . "b" x 3;"#);
let ast = must(parser.parse());
let sexp = ast.to_sexp();
assert!(sexp.contains("binary_x"), "Expected binary_x in: {sexp}");
assert!(sexp.contains("binary_."), "Expected binary_. in: {sexp}");
}
#[test]
fn test_x_with_variable_rhs() {
let mut parser = Parser::new(r#"my $s = "-" x $n;"#);
let ast = must(parser.parse());
let sexp = ast.to_sexp();
assert!(sexp.contains("binary_x"), "Expected binary_x in: {sexp}");
}