/*
Copyright (C) SYSTAP, LLC DBA Blazegraph 2006-2016. All rights reserved.
Contact:
SYSTAP, LLC DBA Blazegraph
2501 Calvert ST NW #106
Washington, DC 20008
licenses@blazegraph.com
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Created on Jun 23, 2008
*/
package com.bigdata.relation.rule;
import java.util.Iterator;
import com.bigdata.relation.rule.IProgram;
import com.bigdata.relation.rule.IRule;
import com.bigdata.relation.rule.IStep;
import com.bigdata.relation.rule.Program;
/**
* Test suite for {@link Program} and common rule/program re-writes.
*
* @author <a href="mailto:thompsonbry@users.sourceforge.net">Bryan Thompson</a>
* @version $Id$
*/
public class TestProgram extends AbstractRuleTestCase {
/**
*
*/
public TestProgram() {
}
/**
* @param name
*/
public TestProgram(String name) {
super(name);
}
public void test_emptyProgram() {
{
final IProgram program = new Program("p1",false/* parallel */,false/*closure*/);
assertEquals("p1",program.getName());
assertFalse("isParallel", program.isParallel());
assertFalse("isClosure", program.isClosure());
assertEquals(0,program.stepCount());
assertFalse("isEmpty", program.steps().hasNext());
assertEquals(0,program.toArray().length);
}
{
final IProgram program = new Program("p2",true/*parallel*/,false/*closure*/);
assertEquals("p2",program.getName());
assertTrue("isParallel", program.isParallel());
assertFalse("isClosure", program.isClosure());
assertEquals(0,program.stepCount());
assertFalse("isEmpty", program.steps().hasNext());
assertEquals(0,program.toArray().length);
}
{
final IProgram program = new Program("p3",true/*parallel*/,true/*closure*/);
assertEquals("p3",program.getName());
assertTrue("isParallel", program.isParallel());
assertTrue("isClosure", program.isClosure());
assertEquals(0,program.stepCount());
assertFalse("isEmpty", program.steps().hasNext());
assertEquals(0,program.toArray().length);
}
}
public void test_simpleProgram() {
final Program program = new Program("p1", false/* parallel */, false/* closure */);
final String relation = "test";
final IRule rule = new TestRuleRdfs04a(relation);
program.addStep( rule );
{
Iterator<? extends IStep> itr = program.steps();
assertTrue(itr.hasNext());
assertTrue(itr.next() == rule);
assertFalse(itr.hasNext());
assertEquals(1,program.stepCount());
}
}
}