}
@Test
public void testMEParser()
{
MethodExpressionParser parser = new MethodExpressionParser("");
assert parser.getUnparsedExpression().equals("");
assert parser.getBaseExpression().equals("");
assert !parser.hasParamsInExpression();
assert parser.getParams().length == 0;
assert parser.getMethodName().equals("");
assert parser.getCombinedExpression().equals("");
assert !parser.isParamExpression();
parser = new MethodExpressionParser("foobar");
assert parser.getUnparsedExpression().equals("foobar");
assert parser.getBaseExpression().equals("foobar");
assert !parser.hasParamsInExpression();
assert parser.getParams().length == 0;
assert parser.getMethodName().equals("");
assert parser.getCombinedExpression().equals("foobar");
assert !parser.isParamExpression();
parser = new MethodExpressionParser("${foo}");
assert parser.getUnparsedExpression().equals("${foo}");
assert parser.getBaseExpression().equals("foo");
assert !parser.hasParamsInExpression();
assert parser.getParams().length == 0;
assert parser.getMethodName().equals("");
assert parser.getCombinedExpression().equals("#{foo}");
assert !parser.isParamExpression();
parser = new MethodExpressionParser(" #{foo} ");
assert parser.getUnparsedExpression().equals(" #{foo} ");
assert parser.getBaseExpression().equals("foo");
assert !parser.hasParamsInExpression();
assert parser.getParams().length == 0;
assert parser.getMethodName().equals("");
assert parser.getCombinedExpression().equals("#{foo}");
assert !parser.isParamExpression();
parser = new MethodExpressionParser("#{foo.bar}");
assert parser.getUnparsedExpression().equals("#{foo.bar}");
assert parser.getBaseExpression().equals("foo");
assert parser.getMethodName().equals("bar");
assert !parser.hasParamsInExpression();
assert parser.getParams().length == 0;
assert parser.getCombinedExpression().equals("#{foo.bar}");
assert !parser.isParamExpression();
parser = new MethodExpressionParser("#{foo[bar]}");
assert parser.getUnparsedExpression().equals("#{foo[bar]}");
assert parser.getBaseExpression().equals("foo");
assert parser.getMethodName().equals("bar");
assert !parser.hasParamsInExpression();
assert parser.getParams().length == 0;
assert parser.getCombinedExpression().equals("#{foo.bar}");
assert !parser.isParamExpression();
parser = new MethodExpressionParser("#{foo[bar()]}");
assert parser.getUnparsedExpression().equals("#{foo[bar()]}");
assert parser.getBaseExpression().equals("foo");
assert parser.getMethodName().equals("bar");
assert !parser.hasParamsInExpression();
assert parser.getParams().length == 0;
assert parser.getCombinedExpression().equals("#{foo.bar}");
assert parser.isParamExpression();
parser = new MethodExpressionParser("#{foo.bar(baz)}");
assert parser.getUnparsedExpression().equals("#{foo.bar(baz)}");
assert parser.getBaseExpression().equals("foo");
assert parser.getMethodName().equals("bar");
assert parser.hasParamsInExpression();
assert parser.getParams().length == 1;
assert parser.getParams()[0].equals("baz");
assert parser.getCombinedExpression().equals("#{foo.bar}");
assert parser.isParamExpression();
parser = new MethodExpressionParser("#{foo.bar.baz( )}");
assert parser.getUnparsedExpression().equals("#{foo.bar.baz( )}");
assert parser.getBaseExpression().equals("foo.bar");
assert parser.getMethodName().equals("baz");
assert !parser.hasParamsInExpression();
assert parser.getParams().length == 0;
assert parser.getCombinedExpression().equals("#{foo.bar.baz}");
assert parser.isParamExpression();
parser = new MethodExpressionParser("#{foo.bar.baz(bum)}");
assert parser.getUnparsedExpression().equals("#{foo.bar.baz(bum)}");
assert parser.getBaseExpression().equals("foo.bar");
assert parser.getMethodName().equals("baz");
assert parser.hasParamsInExpression();
assert parser.getParams().length == 1;
assert parser.getParams()[0].equals("bum");
assert parser.getCombinedExpression().equals("#{foo.bar.baz}");
assert parser.isParamExpression();
parser = new MethodExpressionParser("#{foo.bar[baz(bum)]}");
assert parser.getUnparsedExpression().equals("#{foo.bar[baz(bum)]}");
assert parser.getBaseExpression().equals("foo.bar");
assert parser.getMethodName().equals("baz");
assert parser.hasParamsInExpression();
assert parser.getParams().length == 1;
assert parser.getParams()[0].equals("bum");
assert parser.getCombinedExpression().equals("#{foo.bar.baz}");
assert parser.isParamExpression();
parser = new MethodExpressionParser("#{foo.bar.baz(\"bum\")}");
assert parser.getUnparsedExpression().equals("#{foo.bar.baz(\"bum\")}");
assert parser.getBaseExpression().equals("foo.bar");
assert parser.getMethodName().equals("baz");
assert parser.hasParamsInExpression();
assert parser.getParams().length == 1;
assert parser.getParams()[0].equals("\"bum\"");
assert parser.getCombinedExpression().equals("#{foo.bar.baz}");
assert parser.isParamExpression();
parser = new MethodExpressionParser("#{foo.bar.baz(bum, booger, 'foo')}");
assert parser.getUnparsedExpression().equals("#{foo.bar.baz(bum, booger, 'foo')}");
assert parser.getBaseExpression().equals("foo.bar");
assert parser.getMethodName().equals("baz");
assert parser.hasParamsInExpression();
assert parser.getParams().length == 3;
assert parser.getParams()[0].equals("bum");
assert parser.getParams()[1].equals("booger");
assert parser.getParams()[2].equals("'foo'");
assert parser.getCombinedExpression().equals("#{foo.bar.baz}");
assert parser.isParamExpression();
parser = new MethodExpressionParser("#{foo[1].bar[2].baz(bum, booger, 'foo')}");
assert parser.getUnparsedExpression().equals("#{foo[1].bar[2].baz(bum, booger, 'foo')}");
assert parser.getBaseExpression().equals("foo[1].bar[2]");
assert parser.getMethodName().equals("baz");
assert parser.hasParamsInExpression();
assert parser.getParams().length == 3;
assert parser.getParams()[0].equals("bum");
assert parser.getParams()[1].equals("booger");
assert parser.getParams()[2].equals("'foo'");
assert parser.getCombinedExpression().equals("#{foo[1].bar[2].baz}");
assert parser.isParamExpression();
parser = new MethodExpressionParser("#{foo[\"one\"].bar[\"two\"].baz(bum, booger, 'foo')}");
assert parser.getUnparsedExpression().equals("#{foo[\"one\"].bar[\"two\"].baz(bum, booger, 'foo')}");
assert parser.getBaseExpression().equals("foo[\"one\"].bar[\"two\"]");
assert parser.getMethodName().equals("baz");
assert parser.hasParamsInExpression();
assert parser.getParams().length == 3;
assert parser.getParams()[0].equals("bum");
assert parser.getParams()[1].equals("booger");
assert parser.getParams()[2].equals("'foo'");
assert parser.getCombinedExpression().equals("#{foo[\"one\"].bar[\"two\"].baz}");
assert parser.isParamExpression();
parser = new MethodExpressionParser("#{foo[1].bar[2][baz(bum, booger, 'foo')]}");
assert parser.getUnparsedExpression().equals("#{foo[1].bar[2][baz(bum, booger, 'foo')]}");
assert parser.getBaseExpression().equals("foo[1].bar[2]");
assert parser.getMethodName().equals("baz");
assert parser.hasParamsInExpression();
assert parser.getParams().length == 3;
assert parser.getParams()[0].equals("bum");
assert parser.getParams()[1].equals("booger");
assert parser.getParams()[2].equals("'foo'");
assert parser.getCombinedExpression().equals("#{foo[1].bar[2].baz}");
assert parser.isParamExpression();
}