use super::*;
#[test]
fn test_log_base_10_braced() {
let expr = parse_latex(r"\log_{10}{x}").unwrap();
match &expr.kind {
ExprKind::Function { name, args } => {
assert_eq!(name, "log");
assert_eq!(args.len(), 2);
assert_eq!(args[0], Expression::variable("x".to_string()));
assert_eq!(args[1], Expression::integer(10));
}
_ => panic!("Expected Function(log, [x, 10]), got {:?}", expr),
}
}
#[test]
fn test_log_base_2_braced() {
let expr = parse_latex(r"\log_{2}{n}").unwrap();
match &expr.kind {
ExprKind::Function { name, args } => {
assert_eq!(name, "log");
assert_eq!(args.len(), 2);
assert_eq!(args[0], Expression::variable("n".to_string()));
assert_eq!(args[1], Expression::integer(2));
}
_ => panic!("Expected Function(log, [n, 2]), got {:?}", expr),
}
}
#[test]
fn test_log_no_base() {
let expr = parse_latex(r"\log{x}").unwrap();
match &expr.kind {
ExprKind::Function { name, args } => {
assert_eq!(name, "log");
assert_eq!(args.len(), 1);
assert_eq!(args[0], Expression::variable("x".to_string()));
}
_ => panic!("Expected Function(log, [x]), got {:?}", expr),
}
}
#[test]
fn test_ln_no_base() {
let expr = parse_latex(r"\ln{x}").unwrap();
match &expr.kind {
ExprKind::Function { name, args } => {
assert_eq!(name, "ln");
assert_eq!(args.len(), 1);
assert_eq!(args[0], Expression::variable("x".to_string()));
}
_ => panic!("Expected Function(ln, [x]), got {:?}", expr),
}
}
#[test]
fn test_log_base_variable() {
let expr = parse_latex(r"\log_{b}{x}").unwrap();
match &expr.kind {
ExprKind::Function { name, args } => {
assert_eq!(name, "log");
assert_eq!(args.len(), 2);
assert_eq!(args[0], Expression::variable("x".to_string()));
assert_eq!(args[1], Expression::variable("b".to_string()));
}
_ => panic!("Expected Function(log, [x, b]), got {:?}", expr),
}
}
#[test]
fn test_log_base_roundtrip() {
use crate::latex::ToLatex;
let expr = parse_latex(r"\log_{10}{x}").unwrap();
let latex_out = expr.to_latex();
let expr2 = parse_latex(&latex_out).unwrap();
assert_eq!(
expr, expr2,
"Round-trip failed: {} -> {:?}",
latex_out, expr2
);
}
#[test]
fn test_log_no_base_roundtrip() {
use crate::latex::ToLatex;
let expr = parse_latex(r"\log{x}").unwrap();
let latex_out = expr.to_latex();
let expr2 = parse_latex(&latex_out).unwrap();
assert_eq!(
expr, expr2,
"Round-trip failed: {} -> {:?}",
latex_out, expr2
);
}
#[test]
fn test_ln_roundtrip() {
use crate::latex::ToLatex;
let expr = parse_latex(r"\ln{x}").unwrap();
let latex_out = expr.to_latex();
let expr2 = parse_latex(&latex_out).unwrap();
assert_eq!(
expr, expr2,
"Round-trip failed: {} -> {:?}",
latex_out, expr2
);
}