blob: 65e12de7a254496912182bcce6b98d6593970ab9 [file] [log] [blame]
package ioc.specs
import org.apache.tapestry5.ioc.Invokable
import org.apache.tapestry5.ioc.Registry
import org.apache.tapestry5.ioc.RegistryBuilder
import org.apache.tapestry5.ioc.internal.services.NonParallelModule
import org.apache.tapestry5.ioc.services.ParallelExecutor
import spock.lang.AutoCleanup
import spock.lang.Shared
import spock.lang.Specification
class NonParallelExecutorSpec extends Specification {
@Shared
@AutoCleanup("shutdown")
private Registry registry
@Shared
private ParallelExecutor executor
def setupSpec() {
registry = new RegistryBuilder().add(NonParallelModule).build()
executor = registry.getService ParallelExecutor
}
def "passing an Invokable will immediately invoke()"() {
Invokable inv = Mock()
when:
def actual = executor.invoke(String, inv)
then:
actual == "value"
1 * inv.invoke() >> "value"
}
def "A returned Future object is a simple wrapper around the result"() {
Invokable inv = Mock()
when:
def future = executor.invoke(inv)
then:
1 * inv.invoke() >> "right now"
!future.cancel(false)
!future.cancelled
future.done
future.get() == "right now"
future.get(0, null) == "right now"
}
}