blob: 12f31205f9d9e2623fd61a6fa6424f0bbf8f4529 [file] [log] [blame]
package org.apache.ode.bpel.common;
import static org.junit.Assert.*;
import org.junit.Test;
public class CorrelationKeySetTest {
private CorrelationKey keyX = new CorrelationKey("1~a~b");
private CorrelationKey keyY = new CorrelationKey("2~b~c");
private CorrelationKey keyZ = new CorrelationKey("3~c~d");
private CorrelationKey optX = new OptionalCorrelationKey("1~a~b");
private CorrelationKey optY = new OptionalCorrelationKey("2~b~c");
private CorrelationKey optZ = new OptionalCorrelationKey("3~c~d");
private CorrelationKey implicit = new CorrelationKey("-1~a");
@Test
public void testCanonicalString() throws Exception {
CorrelationKeySet setA = new CorrelationKeySet();
setA.add(keyX);
setA.add(optY);
assertEquals("@2[1~a~b],[2~b~c]", setA.toCanonicalString());
}
@Test
public void testContainsAll() throws Exception {
CorrelationKeySet setA = new CorrelationKeySet();
CorrelationKeySet setB = new CorrelationKeySet();
assertTrue(setA.containsAll(setB));
setA.add(keyX);
assertTrue(setA.containsAll(setB));
setB.add(keyY);
assertFalse(setA.containsAll(setB));
setA.clear();
setA.add(keyY);
assertTrue(setA.containsAll(setB));
}
@Test
public void testRestoreFromCanonicalForm() throws Exception {
assertEquals(new CorrelationKeySet(null), new CorrelationKeySet());
assertEquals(new CorrelationKeySet(""), new CorrelationKeySet());
assertEquals(new CorrelationKeySet("-1~session_key"),
new CorrelationKeySet().add(new CorrelationKey("-1", new String[] {"session_key"})));
assertEquals(new CorrelationKeySet("1~key1~key2"),
new CorrelationKeySet().add(new CorrelationKey("1", new String[] {"key1", "key2"})));
assertEquals(new CorrelationKeySet("@2"), new CorrelationKeySet());
assertEquals(new CorrelationKeySet("@2[-1~session_key]"),
new CorrelationKeySet().add(new CorrelationKey("-1", new String[] {"session_key"})));
assertEquals(new CorrelationKeySet("@2[1~key1~key2]"),
new CorrelationKeySet().add(new CorrelationKey("1", new String[] {"key1", "key2"})));
assertEquals(new CorrelationKeySet("@2[1~key1],[2~key2~key3]"),
new CorrelationKeySet().add(new CorrelationKey("1", new String[] {"key1"}))
.add(new CorrelationKey("2", new String[] {"key2", "key3"})));
assertEquals(new CorrelationKeySet("@2[1~key1],[2~key2~key3]?"),
new CorrelationKeySet().add(new CorrelationKey("1", new String[] {"key1"}))
.add(new CorrelationKey("2", new String[] {"key2", "key3"})));
assertEquals(3, new CorrelationKeySet("@2[1~key1],[2~key2~key3]?").findSubSets().size());
}
@Test
public void testRoutableTo() throws Exception {
CorrelationKeySet setA = new CorrelationKeySet();
CorrelationKeySet setB = new CorrelationKeySet();
assertTrue(setA.isRoutableTo(setB, false));
assertTrue(setA.isRoutableTo(setB, true));
setA.add(keyX);
assertTrue(setA.isRoutableTo(setB, false));
assertTrue(setA.isRoutableTo(setB, true));
setB.add(keyY);
assertFalse(setA.isRoutableTo(setB, false));
assertFalse(setA.isRoutableTo(setB, true));
setA.clear();
setA.add(keyY);
assertTrue(setA.isRoutableTo(setB, false));
assertTrue(setA.isRoutableTo(setB, true));
CorrelationKeySet inbound = new CorrelationKeySet();
CorrelationKeySet candidate = new CorrelationKeySet();
candidate.add(new CorrelationKey("-1~session_key"));
assertFalse(inbound.isRoutableTo(candidate, false));
assertTrue(inbound.isRoutableTo(candidate, true));
inbound.add(new CorrelationKey("-1~session_key_different"));
assertFalse(inbound.isRoutableTo(candidate, false));
assertFalse(inbound.isRoutableTo(candidate, true));
inbound.clear();
inbound.add(keyX);
inbound.add(implicit);
candidate.clear();
candidate.add(keyX);
assertTrue(inbound.isRoutableTo(candidate, false));
}
@Test
public void testFindSubSets() throws Exception {
StringBuffer buf = new StringBuffer();
for( CorrelationKeySet subSet : new CorrelationKeySet().findSubSets() ) {
if( buf.length() > 0 ) {
buf.append(",");
}
buf.append("'").append(subSet.toCanonicalString()).append("'");
}
assertEquals("'@2'", buf.toString());
CorrelationKeySet keySet = new CorrelationKeySet();
keySet.add(keyX);
keySet.add(keyY);
keySet.add(keyZ);
assertTrue(keySet.findSubSets().size() == 7);
keySet = new CorrelationKeySet();
keySet.add(optX);
keySet.add(optY);
keySet.add(optZ);
buf = new StringBuffer();
for( CorrelationKeySet subSet : keySet.findSubSets() ) {
if( buf.length() > 0 ) {
buf.append(",");
}
buf.append("'").append(subSet.toCanonicalString()).append("'");
}
assertEquals("'@2[1~a~b]','@2[2~b~c]','@2[1~a~b],[2~b~c]','@2[3~c~d]','@2[1~a~b],[3~c~d]','@2[2~b~c],[3~c~d]','@2[1~a~b],[2~b~c],[3~c~d]'",
buf.toString());
keySet = new CorrelationKeySet();
keySet.add(keyX);
keySet.add(keyY);
keySet.add(optZ);
buf = new StringBuffer();
for( CorrelationKeySet subSet : keySet.findSubSets() ) {
if( buf.length() > 0 ) {
buf.append(",");
}
buf.append("'").append(subSet.toCanonicalString()).append("'");
}
assertEquals("'@2[1~a~b]','@2[2~b~c]','@2[1~a~b],[2~b~c]','@2[3~c~d]','@2[1~a~b],[3~c~d]','@2[2~b~c],[3~c~d]','@2[1~a~b],[2~b~c],[3~c~d]'", buf.toString());
keySet = new CorrelationKeySet();
keySet.add(keyX);
keySet.add(optY);
keySet.add(optZ);
buf = new StringBuffer();
for( CorrelationKeySet subSet : keySet.findSubSets() ) {
if( buf.length() > 0 ) {
buf.append(",");
}
buf.append("'").append(subSet.toCanonicalString()).append("'");
}
assertEquals("'@2[1~a~b]','@2[2~b~c]','@2[1~a~b],[2~b~c]','@2[3~c~d]','@2[1~a~b],[3~c~d]','@2[2~b~c],[3~c~d]','@2[1~a~b],[2~b~c],[3~c~d]'", buf.toString());
}
}