Skip to content

Commit

Permalink
Tests with MINI_EXPRS
Browse files Browse the repository at this point in the history
  • Loading branch information
radcortez committed Sep 25, 2024
1 parent 25912c6 commit 6942815
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 43 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -179,10 +179,6 @@ public static Expression compile(String string, EnumSet<Flag> flags) {
throw Messages.msg.mutuallyExclusiveEscapeFlags();
}

if (flags.contains(Flag.STRICT_ESCAPES) && flags.contains(Flag.MINI_EXPRS)) {
throw Messages.msg.incompatibleMiniExpsStrictEscapes();
}

final Node content;
final Itr itr;
if (flags.contains(Flag.NO_TRIM)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,4 @@ interface Messages {

@Message(id = 1003, value = "Flags ESCAPES and STRICT_ESCAPES are mutually exclusive")
IllegalArgumentException mutuallyExclusiveEscapeFlags();

@Message(id = 1004, value = "Flags MINI_EXPRS and STRICT_ESCAPES are incompatible")
IllegalArgumentException incompatibleMiniExpsStrictEscapes();
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import static io.smallrye.common.expression.Expression.Flag.NO_SMART_BRACES;
import static org.junit.jupiter.api.Assertions.*;

import java.util.EnumSet;

import org.junit.jupiter.api.Test;

import io.smallrye.common.constraint.Assert;
Expand Down Expand Up @@ -696,95 +698,106 @@ void expressions() {

@Test
void strictEscapes() {
assertEquals("$", Expression.compile("$", STRICT_ESCAPES).evaluate((c, b) -> {
doubleDollarExpressions(EnumSet.of(STRICT_ESCAPES));
doubleDollarExpressions(EnumSet.of(STRICT_ESCAPES, MINI_EXPRS));

assertEquals("", Expression.compile("$a", STRICT_ESCAPES, MINI_EXPRS).evaluate((c, b) -> {
assertEquals("a", c.getKey());
}));
assertEquals("$$a", Expression.compile("$$a", STRICT_ESCAPES, MINI_EXPRS).evaluate((c, b) -> {
}));
}

private void doubleDollarExpressions(EnumSet<Expression.Flag> flags) {
assertEquals("$", Expression.compile("$", flags).evaluate((c, b) -> {
}));
assertEquals("$$", Expression.compile("$$", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("$$", Expression.compile("$$", flags).evaluate((c, b) -> {
}));
assertEquals("\\$", Expression.compile("\\$", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("\\$", Expression.compile("\\$", flags).evaluate((c, b) -> {
}));
assertEquals("\\$$", Expression.compile("\\$$", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("\\$$", Expression.compile("\\$$", flags).evaluate((c, b) -> {
}));
assertEquals("$$foo", Expression.compile("$$foo", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("$$foo", Expression.compile("$$foo", flags).evaluate((c, b) -> {
}));
assertEquals("foo$$", Expression.compile("foo$$", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("foo$$", Expression.compile("foo$$", flags).evaluate((c, b) -> {
}));
assertEquals("$$foo", Expression.compile("$$foo", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("$$foo", Expression.compile("$$foo", flags).evaluate((c, b) -> {
}));
assertEquals("foo$$bar", Expression.compile("foo$$bar", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("foo$$bar", Expression.compile("foo$$bar", flags).evaluate((c, b) -> {
}));
assertEquals("${foo}", Expression.compile("$${foo}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("${foo}", Expression.compile("$${foo}", flags).evaluate((c, b) -> {
}));
assertEquals("$${foo}", Expression.compile("$$${foo}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("$${foo}", Expression.compile("$$${foo}", flags).evaluate((c, b) -> {
}));
assertEquals("$${foo}$", Expression.compile("$$${foo}$", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("$${foo}$", Expression.compile("$$${foo}$", flags).evaluate((c, b) -> {
}));
assertEquals("$${foo}$$", Expression.compile("$$${foo}$$", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("$${foo}$$", Expression.compile("$$${foo}$$", flags).evaluate((c, b) -> {
}));
assertEquals("foo${bar}", Expression.compile("foo$${bar}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("foo${bar}", Expression.compile("foo$${bar}", flags).evaluate((c, b) -> {
}));
assertEquals("foo$${bar}", Expression.compile("foo$$${bar}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("foo$${bar}", Expression.compile("foo$$${bar}", flags).evaluate((c, b) -> {
}));
assertEquals("foo$$$${bar}", Expression.compile("foo$$$$${bar}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("foo$$$${bar}", Expression.compile("foo$$$$${bar}", flags).evaluate((c, b) -> {
}));
assertEquals("foo$$$${bar}$$$baz", Expression.compile("foo$$$$${bar}$$$baz", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("foo$$$${bar}$$$baz", Expression.compile("foo$$$$${bar}$$$baz", flags).evaluate((c, b) -> {
}));
assertEquals("foo$$$$", Expression.compile("foo$$$$", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("foo$$$$", Expression.compile("foo$$$$", flags).evaluate((c, b) -> {
}));
assertEquals("${foo:bar}", Expression.compile("$${foo:bar}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("${foo:bar}", Expression.compile("$${foo:bar}", flags).evaluate((c, b) -> {
}));
assertEquals("$${foo:bar}", Expression.compile("$$${foo:bar}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("$${foo:bar}", Expression.compile("$$${foo:bar}", flags).evaluate((c, b) -> {
}));
assertEquals("${foo:}", Expression.compile("$${foo:${bar}}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("${foo:}", Expression.compile("$${foo:${bar}}", flags).evaluate((c, b) -> {
}));
assertEquals("${foo:${bar}}", Expression.compile("$${foo:$${bar}}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("${foo:${bar}}", Expression.compile("$${foo:$${bar}}", flags).evaluate((c, b) -> {
}));

assertEquals("", Expression.compile("${foo}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("", Expression.compile("${foo}", flags).evaluate((c, b) -> {
assertEquals("foo", c.getKey());
}));
assertEquals("", Expression.compile("${foo}${bar}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("", Expression.compile("${foo}${bar}", flags).evaluate((c, b) -> {
if ("foo".equals(c.getKey()))
assertEquals("foo", c.getKey());
if ("bar".equals(c.getKey()))
assertEquals("bar", c.getKey());
}));
assertEquals("foobar", Expression.compile("foo${foo}${bar}bar", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("foobar", Expression.compile("foo${foo}${bar}bar", flags).evaluate((c, b) -> {
if ("foo".equals(c.getKey()))
assertEquals("foo", c.getKey());
if ("bar".equals(c.getKey()))
assertEquals("bar", c.getKey());
}));
assertEquals("foo${foo}bar", Expression.compile("foo$${foo}${bar}bar", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("foo${foo}bar", Expression.compile("foo$${foo}${bar}bar", flags).evaluate((c, b) -> {
if ("bar".equals(c.getKey()))
assertEquals("bar", c.getKey());
}));
assertEquals("foo${foo}bar", Expression.compile("foo$${foo${bar}}bar", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("foo${foo}bar", Expression.compile("foo$${foo${bar}}bar", flags).evaluate((c, b) -> {
if ("bar".equals(c.getKey()))
assertEquals("bar", c.getKey());
}));
assertEquals("", Expression.compile("${}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("", Expression.compile("${}", flags).evaluate((c, b) -> {
assertEquals("", c.getKey());
}));
assertEquals("", Expression.compile("${:}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("", Expression.compile("${:}", flags).evaluate((c, b) -> {
assertEquals("", c.getKey());
}));

assertEquals("${foo}", Expression.compile("\\${foo}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("${foo}", Expression.compile("\\${foo}", flags).evaluate((c, b) -> {
}));
assertEquals("${foo}bar", Expression.compile("\\${foo}bar", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("${foo}bar", Expression.compile("\\${foo}bar", flags).evaluate((c, b) -> {
}));
assertEquals("\\$\\{%s}", Expression.compile("\\$\\{%s}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("\\$\\{%s}", Expression.compile("\\$\\{%s}", flags).evaluate((c, b) -> {
}));
assertEquals("foo${bar}", Expression.compile("foo\\${bar}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("foo${bar}", Expression.compile("foo\\${bar}", flags).evaluate((c, b) -> {
}));
assertEquals("foo\\${bar}", Expression.compile("foo\\\\${bar}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("foo\\${bar}", Expression.compile("foo\\\\${bar}", flags).evaluate((c, b) -> {
}));

assertEquals("foo\\${bar}", Expression.compile("foo\\$${bar}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("foo\\${bar}", Expression.compile("foo\\$${bar}", flags).evaluate((c, b) -> {
}));
assertEquals("foo$${bar}", Expression.compile("foo$\\${bar}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("foo$${bar}", Expression.compile("foo$\\${bar}", flags).evaluate((c, b) -> {
}));
assertEquals("foo$$\\{bar}", Expression.compile("foo$$\\{bar}", STRICT_ESCAPES).evaluate((c, b) -> {
assertEquals("foo$$\\{bar}", Expression.compile("foo$$\\{bar}", flags).evaluate((c, b) -> {
}));
}
}

0 comments on commit 6942815

Please sign in to comment.