/* * JCaptcha, the open source java framework for captcha definition and integration * Copyright (c) 2007 jcaptcha.net. All Rights Reserved. * See the LICENSE.txt file distributed with this package. */ /* * jcaptcha, the open source java framework for captcha definition and integration * copyright (c) 2007 jcaptcha.net. All Rights Reserved. * See the LICENSE.txt file distributed with this package. */ package com.octo.captcha.engine.bufferedengine; import com.octo.captcha.engine.MockCaptchaEngine; import com.octo.captcha.engine.bufferedengine.buffer.MemoryCaptchaBuffer; import java.util.HashMap; import java.util.Locale; /** * <p><ul><li></li></ul></p> * * @author <a href="mailto:marc.antoine.garrigue@gmail.com">Marc-Antoine Garrigue</a> * @version 1.0 */ public class MockedBufferedEngineContainerTest extends BufferedEngineContainerTestAbstract { int swap = 100; int feed = 1000; int maxVolatil = 2 * swap; int maxPersistent = 3 * feed; BufferedEngineContainer engine; protected void setUp() throws Exception { super.setUp(); HashMap localRatio = new HashMap(); localRatio.put(Locale.FRANCE, new Double(0.2)); localRatio.put(Locale.US, new Double(0.8)); ContainerConfiguration config = new ContainerConfiguration(localRatio, maxVolatil, maxPersistent, swap, feed); this.engine = new MockedBufferedCaptchaEngine(config); } public void testFeedAndSwap() { assertEquals("buffers should be empty", 0, engine.getVolatileBuffer().size()); assertEquals("buffers should be empty", 0, engine.getPersistentBuffer().size()); engine.swapCaptchasFromPersistentToVolatileMemory(); assertEquals("buffers should be empty", 0, engine.getVolatileBuffer().size()); assertEquals("buffers should be empty", 0, engine.getPersistentBuffer().size()); engine.feedPersistentBuffer(); assertEquals("volatil buffer should be empty", 0, engine.getVolatileBuffer().size()); assertEquals("pers buffer should be filled", feed, engine.getPersistentBuffer().size()); engine.swapCaptchasFromPersistentToVolatileMemory(); assertEquals("volatil buffer should be filled", swap, engine.getVolatileBuffer().size()); assertEquals("pers buffer should be updated", feed - swap, engine.getPersistentBuffer().size()); engine.swapCaptchasFromPersistentToVolatileMemory(); assertEquals("volatil buffer should be filled", 2 * swap, engine.getVolatileBuffer().size()); assertEquals("pers buffer should be updated", feed - 2 * swap, engine.getPersistentBuffer().size()); engine.swapCaptchasFromPersistentToVolatileMemory(); assertEquals("volatil buffer should be filled", maxVolatil, engine.getVolatileBuffer().size()); assertEquals("pers buffer should be updated", feed - 2 * swap, engine.getPersistentBuffer().size()); engine.getNextCaptcha(Locale.FRANCE); assertEquals("volatil buffer should be updated", maxVolatil - 1, engine.getVolatileBuffer().size()); engine.swapCaptchasFromPersistentToVolatileMemory(); assertEquals("volatil buffer should be filled", 2 * swap, engine.getVolatileBuffer().size()); assertEquals("pers buffer should be updated", feed - 2 * swap - 1, engine.getPersistentBuffer().size()); engine.getNextCaptcha(Locale.US); assertEquals("volatil buffer should be updated", maxVolatil - 1, engine.getVolatileBuffer().size()); engine.swapCaptchasFromPersistentToVolatileMemory(); assertEquals("volatil buffer should be filled", maxVolatil, engine.getVolatileBuffer().size()); assertEquals("pers buffer should be updated", feed - 2 * swap - 2, engine.getPersistentBuffer().size()); engine.getNextCaptcha(Locale.CHINA); assertEquals("volatil buffer should be updated", maxVolatil, engine.getVolatileBuffer().size()); engine.swapCaptchasFromPersistentToVolatileMemory(); assertEquals("volatil buffer should be filled", maxVolatil, engine.getVolatileBuffer().size()); assertEquals("pers buffer should be updated", feed - 2 * swap - 2, engine.getPersistentBuffer().size()); engine.feedPersistentBuffer(); assertEquals("volatil buffer should be filled", maxVolatil, engine.getVolatileBuffer().size()); assertEquals("pers buffer should be updated", 2 * feed - 2 * swap - 2, engine.getPersistentBuffer().size()); engine.feedPersistentBuffer(); assertEquals("volatil buffer should be filled", maxVolatil, engine.getVolatileBuffer().size()); assertEquals("pers buffer should be updated", 3 * feed - 2 * swap - 2, engine.getPersistentBuffer().size()); engine.feedPersistentBuffer(); assertEquals("volatil buffer should be filled", maxVolatil, engine.getVolatileBuffer().size()); assertEquals("pers buffer should be updated", maxPersistent, engine.getPersistentBuffer().size()); } public BufferedEngineContainer getEngine() { return this.engine; } public void releaseEngine(BufferedEngineContainer engine) { this.engine.getVolatileBuffer().clear(); this.engine.getPersistentBuffer().clear(); } private class MockedBufferedCaptchaEngine extends BufferedEngineContainer { /** * Construct an BufferedEngineContainer with and Captcha engine, a memory buffer, a diskBuffer and a * ContainerConfiguration. * * @param containerConfiguration the container configuration */ public MockedBufferedCaptchaEngine(ContainerConfiguration containerConfiguration) { super(new MockCaptchaEngine(), new MemoryCaptchaBuffer(), new MemoryCaptchaBuffer(), containerConfiguration); } } }