	@SuppressWarnings("unchecked")
	@Test
	public void testSlicerPull() 
	{

		Slice sli = new Slice(Numbers.isEven, new Sum());
		QueueSource source = new QueueSource().setEvents(1, 1, 6, 2, 3);
		Connector.connect(source, sli);
		Pullable p = sli.getPullableOutput();
		Map<Object,Object> map;
		for (int k = 0; k < 2; k++)
		{
			assertEquals(0, sli.getActiveSliceCount());
			map = (Map<Object,Object>) p.pull();
			assertEquals(1.0f, map.get(false));
			assertEquals(1, sli.getActiveSliceCount());
			map = (Map<Object,Object>) p.pull();
			assertEquals(2.0f, map.get(false));
			assertEquals(1, sli.getActiveSliceCount());
			map = (Map<Object,Object>) p.pull();
			assertEquals(2.0f, map.get(false));
			assertEquals(6.0f, map.get(true));
			assertEquals(2, sli.getActiveSliceCount());
			map = (Map<Object,Object>) p.pull();
			assertEquals(2.0f, map.get(false));
			assertEquals(8.0f, map.get(true));
			assertEquals(2, sli.getActiveSliceCount());
			map = (Map<Object,Object>) p.pull();
			assertEquals(5.0f, map.get(false));
			assertEquals(8.0f, map.get(true));
			assertEquals(2, sli.getActiveSliceCount());
			sli.reset();
			source.reset();
		}
		// These methods should not do anything
		p.start();
		p.stop();
		p.dispose();
		boolean got_exception = false;
		try
		{
			p.remove();
		}
		catch (UnsupportedOperationException e)
		{
			got_exception = true;
		}
		assertTrue(got_exception);
	}