/**
* Licensed to Apereo under one or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information regarding copyright ownership. Apereo
* licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use
* this file except in compliance with the License. You may obtain a copy of the License at the
* following location:
*
* <p>http://www.apache.org/licenses/LICENSE-2.0
*
* <p>Unless required by applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apereo.portal.layout.dlm.providers;
import junit.framework.TestCase;
import org.apereo.portal.layout.dlm.Evaluator;
import org.apereo.portal.layout.dlm.EvaluatorFactory;
import org.apereo.portal.security.IPerson;
import org.apereo.portal.security.provider.PersonImpl;
import org.dom4j.Element;
public class ParenTest extends TestCase {
public void testIsApplicable() {
IPerson p = new PersonImpl();
// Paren.Type.OR...
Paren orParen = new Paren(Paren.Type.OR);
orParen.addEvaluator(new AllUsersEvaluatorFactory());
assertTrue("true should make true", orParen.isApplicable(p));
orParen.addEvaluator(new NoUsersEvaluatorFactory());
assertTrue("true + false should make true", orParen.isApplicable(p));
orParen = new Paren(Paren.Type.OR);
orParen.addEvaluator(new NoUsersEvaluatorFactory());
assertFalse("false should make false", orParen.isApplicable(p));
// Paren.Type.AND...
Paren andParen = new Paren(Paren.Type.AND);
andParen.addEvaluator(new AllUsersEvaluatorFactory());
assertTrue("true should make true", andParen.isApplicable(p));
andParen.addEvaluator(new NoUsersEvaluatorFactory());
assertFalse("true + false should make false", andParen.isApplicable(p));
// Paren.Type.NOT...
Paren notParen = new Paren(Paren.Type.NOT);
notParen.addEvaluator(new AllUsersEvaluatorFactory());
assertFalse("true should make false", notParen.isApplicable(p));
notParen = new Paren(Paren.Type.NOT);
notParen.addEvaluator(new NoUsersEvaluatorFactory());
assertTrue("false should make true", notParen.isApplicable(p));
}
private static class NoUsersEvaluatorFactory extends Evaluator {
@Override
public Class<? extends EvaluatorFactory> getFactoryClass() {
throw new UnsupportedOperationException();
}
@Override
public boolean isApplicable(IPerson person) {
return false;
}
@Override
public void toElement(Element parent) {
throw new UnsupportedOperationException();
}
@Override
public String getSummary() {
return "(NO ONE)";
}
}
}