import org.wamblee.system.container.Application;
import org.wamblee.system.core.Component;
import org.wamblee.system.core.Environment;
import org.wamblee.system.container.Application;
import org.wamblee.system.core.Component;
import org.wamblee.system.core.Environment;
assertFalse(composite.isViolated(createEdge(_app, _app.getRequiredInterfaces().get(0),
_env, _env.getProvidedInterfaces().get(0))));
assertFalse(composite.isViolated(createEdge(_app, _app.getRequiredInterfaces().get(0),
_env, _env.getProvidedInterfaces().get(0))));
assertTrue(composite.isViolated(createEdge(_app, _app.getRequiredInterfaces().get(0),
_env, _env.getProvidedInterfaces().get(0))));
assertTrue(composite.isViolated(createEdge(_app, _app.getRequiredInterfaces().get(0),
_env, _env.getProvidedInterfaces().get(0))));
composite.add(base2);
// 1. base1 not violated and base 2 not violated -> not violated.
configureRestriction(base1, false);
configureRestriction(base2, false);
composite.add(base2);
// 1. base1 not violated and base 2 not violated -> not violated.
configureRestriction(base1, false);
configureRestriction(base2, false);
assertFalse(composite.isViolated(createEdge(_app, _app.getRequiredInterfaces().get(0),
_env, _env.getProvidedInterfaces().get(0))));
assertFalse(composite.isViolated(createEdge(_app, _app.getRequiredInterfaces().get(0),
_env, _env.getProvidedInterfaces().get(0))));
// 2. base 1 not violated but base 2 violated -> violated
configureRestriction(base1, false);
configureRestriction(base2, true);
// 2. base 1 not violated but base 2 violated -> violated
configureRestriction(base1, false);
configureRestriction(base2, true);
assertTrue(composite.isViolated(createEdge(_app, _app.getRequiredInterfaces().get(0),
_env, _env.getProvidedInterfaces().get(0))));
assertTrue(composite.isViolated(createEdge(_app, _app.getRequiredInterfaces().get(0),
_env, _env.getProvidedInterfaces().get(0))));
// 3. base 1 violated -> violated and base 2 not called.
configureRestriction(base1, true);
// base 2 should not be called.
// 3. base 1 violated -> violated and base 2 not called.
configureRestriction(base1, true);
// base 2 should not be called.
assertTrue(composite.isViolated(createEdge(_app, _app.getRequiredInterfaces().get(0),
_env, _env.getProvidedInterfaces().get(0))));
assertTrue(composite.isViolated(createEdge(_app, _app.getRequiredInterfaces().get(0),
_env, _env.getProvidedInterfaces().get(0))));