/*
* 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.buffer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Locale;
import junit.framework.TestCase;
import com.octo.captcha.Captcha;
import com.octo.captcha.engine.CaptchaEngine;
import com.octo.captcha.engine.image.gimpy.DefaultGimpyEngine;
/**
* Abstract class to test Buffers
*
* @author Benoit Doumas
*/
public abstract class CaptchaBufferTestAbstract extends TestCase {
protected CaptchaBuffer buffer = null;
public static final int SIZE = 50;
public CaptchaEngine engine = null;
/*
* @see TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
engine = new DefaultGimpyEngine();
}
/*
* @see TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
}
/*
* Class under test for Captcha removeCaptcha()
*/
public void testRemoveCaptcha() {
buffer = getBuffer();
ArrayList listToStore = new ArrayList(SIZE);
for (int i = 0; i < SIZE; ++i) {
listToStore.add(engine.getNextCaptcha());
}
buffer.putAllCaptcha(listToStore);
Captcha captcha = buffer.removeCaptcha();
assertNotNull(captcha);
}
/*
* Class under test for Collection removeCaptcha(int)
*/
public void testRemoveCaptchaint() {
buffer = getBuffer();
ArrayList listToStore = new ArrayList(SIZE);
for (int i = 0; i < SIZE; ++i) {
listToStore.add(engine.getNextCaptcha());
}
buffer.putAllCaptcha(listToStore);
Collection captchas = buffer.removeCaptcha(SIZE);
assertEquals(SIZE, captchas.size());
}
/*
* Class under test for void putCaptcha(Captcha)
*/
public void testPutCaptchaCaptcha() {
buffer = getBuffer();
buffer.putCaptcha(engine.getNextCaptcha());
assertEquals(1, buffer.size());
}
/*
* Class under test for void putAllCaptcha(Collection)
*/
public void testPutAllCaptchaCollection() {
buffer = getBuffer();
ArrayList listToStore = new ArrayList(SIZE);
for (int i = 0; i < SIZE; ++i) {
listToStore.add(engine.getNextCaptcha());
}
buffer.putAllCaptcha(listToStore);
assertEquals(SIZE, buffer.size());
}
/*
* Class under test for Captcha removeCaptcha(Locale)
*/
public void testRemoveCaptchaLocale() {
buffer = getBuffer();
buffer.putCaptcha(engine.getNextCaptcha(), Locale.GERMAN);
assertNotNull(buffer.removeCaptcha(Locale.GERMAN));
}
/*
* Class under test for Collection removeCaptcha(int, Locale)
*/
public void testRemoveCaptchaintLocale() {
buffer = getBuffer();
ArrayList listToStore = new ArrayList(SIZE);
for (int i = 0; i < SIZE; ++i) {
listToStore.add(engine.getNextCaptcha());
}
buffer.putAllCaptcha(listToStore, Locale.GERMAN);
Collection captchas = buffer.removeCaptcha(SIZE, Locale.GERMAN);
assertEquals(SIZE, captchas.size());
}
/*
* Class under test for void putCaptcha(Captcha, Locale)
*/
public void testPutCaptchaCaptchaLocale() {
buffer = getBuffer();
buffer.putCaptcha(engine.getNextCaptcha(), Locale.GERMAN);
assertEquals(1, buffer.size(Locale.GERMAN));
}
/*
* Class under test for void putAllCaptcha(Collection, Locale)
*/
public void testPutAllCaptchaCollectionLocale() {
buffer = getBuffer();
ArrayList listToStore = new ArrayList(SIZE);
for (int i = 0; i < SIZE; ++i) {
listToStore.add(engine.getNextCaptcha());
}
buffer.putAllCaptcha(listToStore, Locale.GERMAN);
assertEquals(SIZE, buffer.size(Locale.GERMAN));
}
public void testClear() {
buffer = getBuffer();
ArrayList listToStore = new ArrayList(SIZE);
for (int i = 0; i < SIZE; ++i) {
listToStore.add(engine.getNextCaptcha());
}
buffer.putAllCaptcha(listToStore);
buffer.clear();
assertEquals(0, buffer.size());
}
public void testGetLocales() {
buffer = getBuffer();
ArrayList listToStore = new ArrayList(100);
for (int i = 0; i < SIZE; ++i) {
listToStore.add(engine.getNextCaptcha());
}
buffer.putAllCaptcha(listToStore, Locale.GERMAN);
buffer.putAllCaptcha(listToStore, Locale.US);
buffer.putAllCaptcha(listToStore, Locale.FRANCE);
assertEquals(3, buffer.getLocales().size());
}
public void testIntegrity() {
int numToRemove = 10;
buffer = getBuffer();
ArrayList listToStore = new ArrayList(100);
for (int i = 0; i < SIZE; ++i) {
listToStore.add(engine.getNextCaptcha());
}
buffer.putAllCaptcha(listToStore);
buffer.removeCaptcha(numToRemove);
assertEquals(SIZE - numToRemove, buffer.size());
}
public void testBufferGoesEmpty() {
int numToRemove = 10;
buffer = getBuffer();
ArrayList listToStore = new ArrayList(100);
for (int i = 0; i < 1; ++i) {
listToStore.add(engine.getNextCaptcha());
}
buffer.putAllCaptcha(listToStore);
assertEquals(1, buffer.removeCaptcha(numToRemove).size());
}
public abstract CaptchaBuffer getBuffer();
}