blob: 2748e61e92a42e1c067b70ebeca64b04c9cf06f3 [file] [log] [blame]
package ioc.specs
import org.apache.tapestry5.ioc.internal.services.StandardFilter
import org.apache.tapestry5.ioc.internal.services.StandardService
import org.apache.tapestry5.ioc.services.PipelineBuilder
import org.slf4j.Logger
import spock.lang.Shared
class PipelineBuilderImplSpec extends AbstractSharedRegistrySpecification {
@Shared
PipelineBuilder builder
def setupSpec() { builder = getService PipelineBuilder }
Logger logger = Mock()
def "standard pipeline with filters"() {
// For some reason, this didn't work with closures, just with actual inner classes
StandardFilter subtracter = new StandardFilter() {
@Override
int run(int i, StandardService service) {
service.run(i) - 2
}
}
StandardFilter multiplier = new StandardFilter() {
@Override
int run(int i, StandardService service) {
2 * service.run(i)
}
}
StandardFilter adder = new StandardFilter() {
@Override
int run(int i, StandardService service) {
service.run(i + 3)
}
}
StandardService terminator = new StandardService() {
@Override
int run(int i) {
i
}
}
when:
StandardService pipeline = builder.build logger, StandardService, StandardFilter, [subtracter, multiplier, adder], terminator
then:
pipeline.run(5) == 14
pipeline.run(10) == 24
}
def "a pipeline without filters is simply the temrinator"() {
StandardService terminator = Mock()
when:
StandardService pipeline = builder.build logger, StandardService, StandardFilter, [], terminator
then:
pipeline.is terminator
}
def "a pipeline with no filters and no terminator does nothing"() {
when:
StandardService pipeline = builder.build logger, StandardService, StandardFilter, []
then:
pipeline.run(99) == 0
}
}