com.clican.pluto.dataprocess.engine.processes.ForProcessorTestCase.java Source code

Java tutorial

Introduction

Here is the source code for com.clican.pluto.dataprocess.engine.processes.ForProcessorTestCase.java

Source

/**
 * The Clican-Pluto software suit is Copyright 2009, Clican Company and individual contributors, and is licensed under the GNU LGPL.
 *
 * @author clican
 *
 */
package com.clican.pluto.dataprocess.engine.processes;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import junit.framework.TestCase;

import org.apache.commons.lang.time.DateUtils;
import org.jmock.Expectations;
import org.jmock.Mockery;

import com.clican.pluto.dataprocess.engine.DataProcessTransaction;
import com.clican.pluto.dataprocess.engine.DataProcessor;
import com.clican.pluto.dataprocess.engine.ProcessorContext;
import com.clican.pluto.dataprocess.engine.impl.ProcessorContextImpl;
import com.clican.pluto.dataprocess.engine.processes.ForProcessor;
import com.clican.pluto.dataprocess.exception.DataProcessException;

public class ForProcessorTestCase extends TestCase {

    private Mockery context = new Mockery();

    private List<DataProcessor> getIteratorProcessors() {
        DataProcessor p = new DataProcessor() {

            public DataProcessor afterProcess(ProcessorContext context) throws DataProcessException {
                return null;
            }

            public void beforeProcess(ProcessorContext context) throws DataProcessException {

            }

            public String getTransaction() {
                return null;
            }

            public void process(ProcessorContext context) throws DataProcessException {

            }
        };
        List<DataProcessor> result = new ArrayList<DataProcessor>();
        result.add(p);
        return result;
    }

    public void test1() throws Exception {
        ForProcessor p = new ForProcessor();
        p.setIteratorProcessors(this.getIteratorProcessors());
        p.setStart("start+1");
        p.setEnd("end+1");
        p.setStep("1");
        ProcessorContext ctx = new ProcessorContextImpl();
        ctx.setAttribute("start", 10);
        ctx.setAttribute("end", 20);
        p.process(ctx);
    }

    public void test2() throws Exception {
        ForProcessor p = new ForProcessor();
        final DataProcessTransaction t = context.mock(DataProcessTransaction.class);
        p.setDataProcessTransaction(t);
        p.setIteratorProcessors(this.getIteratorProcessors());
        p.setStart("start-1");
        p.setEnd("end-1");
        p.setStep("1");
        p.setStepCommit(true);
        final ProcessorContext ctx = new ProcessorContextImpl();
        ctx.setAttribute("start", 10);
        ctx.setAttribute("end", 20);
        context.checking(new Expectations() {
            {
                this.allowing(t).doInCommit((DataProcessor) with(anything()), with(same(ctx)));
            }
        });
        p.process(ctx);
    }

    public void test3() throws Exception {
        ForProcessor p = new ForProcessor();
        p.setIteratorProcessors(this.getIteratorProcessors());
        p.setStart("start+1day");
        p.setEnd("end+1day");
        p.setStep("1day");
        ProcessorContext ctx = new ProcessorContextImpl();
        ctx.setAttribute("start", new Date());
        ctx.setAttribute("end", DateUtils.add(new Date(), Calendar.DAY_OF_MONTH, 10));
        p.process(ctx);
    }

    public void test4() throws Exception {
        ForProcessor p = new ForProcessor();
        final DataProcessTransaction t = context.mock(DataProcessTransaction.class);
        p.setDataProcessTransaction(t);
        p.setIteratorProcessors(this.getIteratorProcessors());
        p.setStart("start-1month");
        p.setEnd("end-1month");
        p.setStep("1day");
        p.setStepCommit(true);
        final ProcessorContext ctx = new ProcessorContextImpl();
        ctx.setAttribute("start", new Date());
        ctx.setAttribute("end", DateUtils.add(new Date(), Calendar.DAY_OF_MONTH, 10));
        context.checking(new Expectations() {
            {
                this.allowing(t).doInCommit((DataProcessor) with(anything()), with(same(ctx)));
            }
        });
        p.process(ctx);
    }
}

// $Id$