2006-07-13
TDD开发实践一:文件过滤器
TDD以及单元测试的重要性就不多说了啊,还是看看实际的开始实践吧
测试用例如下:
相应的目标测试代码如下:
,记得在没写一个方法之前,先编写测试方法,先写好你想测什么东西,这样相应的测试方法写好了,然后就运行测试代码,之后去编写目标代码来让测试通过,记住小步前进。
测试用例如下:
/**
* Copyright(c) 2005 Ceno Techonologies, Ltd.
*
* History:
* 2006-7-4 下午01:49:06 Created by guyang
*/
package com.numen.sessionframework.common.io;
import java.io.File;
import com.numen.sessionframework.common.io.ExtensionFileFilter;
import junit.framework.TestCase;
/**
*
* @author <a href="mailto:hyysguyang@163.com">guyang</a>
* @version 1.0 2006-7-4 下午01:49:06
*/
public class ExtensionFileFilterTest extends TestCase {
/*
* (non-Javadoc)
*
* @see junit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
}
/*
* (non-Javadoc)
*
* @see junit.framework.TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
}
/**
* Test method for
* {@link com.ceno.solar.web.tools.ExtensionFileFilter#addExtension(java.lang.String)}.
*/
public void testNullAndEmptyInputAddExtension() {
ExtensionFileFilter filter = new ExtensionFileFilter();
filter.addExtension(null);
assertEquals("The size of extension list should be zero", 0, filter.getExtensionList().size());
filter.addExtension("");
assertEquals("The size of extension list should be zero", 0, filter.getExtensionList().size());
}
/**
* Test method for
* {@link com.ceno.solar.web.tools.ExtensionFileFilter#addExtension(java.lang.String)}.
*/
public void testSingleExtensionAddExtension() {
ExtensionFileFilter filter = new ExtensionFileFilter();
filter.addExtension(".gif");
assertEquals("The size of extension list should be one", 1, filter.getExtensionList().size());
assertEquals("The size of extension list should be '.gif'", ".gif", filter.getExtensionList().get(0));
assertTrue("The extension list should contain '.gif' extension.", filter.getExtensionList().contains(".gif"));
}
/**
* Test method for
* {@link com.ceno.solar.web.tools.ExtensionFileFilter#addExtension(java.lang.String)}.
*/
public void testHaveInvalidExtensionAddExtension() {
ExtensionFileFilter filter = new ExtensionFileFilter();
filter.addExtension("dfasdf,.dgs¥……5÷4¥sdg,.hgdfhsagh");
assertEquals("The size of extension list should be two", 2, filter.getExtensionList().size());
assertTrue("The extension list should contain '.dgs¥……5÷4¥sdg' extension.", filter.getExtensionList().contains(
".dgs¥……5÷4¥sdg"));
assertTrue("The extension list should contain '.hgdfhsagh' extension.", filter.getExtensionList().contains(".hgdfhsagh"));
}
/**
* Test method for
* {@link com.ceno.solar.web.tools.ExtensionFileFilter#addExtension(java.lang.String)}.
*/
public void testNormalExtensionAddExtension() {
ExtensionFileFilter filter = new ExtensionFileFilter();
filter.addExtension(".dfasdf,.dgs¥……5÷4¥sdg,.hgdfhsagh");
assertEquals("The size of extension list should be three", 3, filter.getExtensionList().size());
assertTrue("The extension list should contain '.dfasdf' extension.", filter.getExtensionList().contains(".dfasdf"));
assertTrue("The extension list should contain '.dgs¥……5÷4¥sdg' extension.", filter.getExtensionList().contains(
".dgs¥……5÷4¥sdg"));
assertTrue("The extension list should contain '.hgdfhsagh' extension.", filter.getExtensionList().contains(".hgdfhsagh"));
}
/**
* Test method for
* {@link com.ceno.solar.web.tools.ExtensionFileFilter#removeExtension(java.lang.String)}.
*/
public void testNullAndEmptyRemoveExtension() {
ExtensionFileFilter filter = new ExtensionFileFilter();
filter.addExtension(".txt");
filter.removeExtension(null);
filter.removeExtension("");
assertEquals("The size of extension list should be one", 1, filter.getExtensionList().size());
assertTrue("The extension list should contain '.txt' extension.", filter.getExtensionList().contains(".txt"));
}
/**
* Test method for
* {@link com.ceno.solar.web.tools.ExtensionFileFilter#removeExtension(java.lang.String)}.
*/
public void testSingleRemoveExtension() {
ExtensionFileFilter filter = new ExtensionFileFilter();
filter.addExtension(".txt");
filter.removeExtension(".txt");
filter.removeExtension("");
assertEquals("The size of extension list should be zero", 0, filter.getExtensionList().size());
}
/**
* Test method for
* {@link com.ceno.solar.web.tools.ExtensionFileFilter#removeExtension(java.lang.String)}.
*/
public void testHaveInvalidExtensionRemoveExtension() {
ExtensionFileFilter filter = new ExtensionFileFilter();
filter.addExtension(".gfdsags,.hdfhdsh,.txt");
filter.removeExtension(".txt");
filter.removeExtension("aaaa");
assertEquals("The size of extension list should be two", 2, filter.getExtensionList().size());
}
/**
* Test method for
* {@link com.ceno.solar.web.tools.ExtensionFileFilter#removeExtension(java.lang.String)}.
*/
public void testNormalExtensionRemoveExtension() {
ExtensionFileFilter filter = new ExtensionFileFilter();
filter.addExtension(".gfdsags,.hdfhdsh,.txt");
filter.removeExtension(".hdfhdsh");
filter.removeExtension(".gfdsags");
filter.removeExtension(".txt");
assertEquals("The size of extension list should be 0", 0, filter.getExtensionList().size());
}
/**
* Test method for
* {@link com.ceno.solar.web.tools.ExtensionFileFilter#accept(java.io.File)}.
*/
public void testNoExtensionAccept() {
File file = new File("");
ExtensionFileFilter filter = new ExtensionFileFilter();
assertFalse("The gif extension should is not allowed", filter.accept(file));
}
/**
* Test method for
* {@link com.ceno.solar.web.tools.ExtensionFileFilter#accept(java.io.File)}.
*/
public void testInvalidExtensionAccept() {
File file = new File("gsdg");
ExtensionFileFilter filter = new ExtensionFileFilter();
assertFalse("The gsdg extension should is not allowed", filter.accept(file));
}
/**
* Test method for
* {@link com.ceno.solar.web.tools.ExtensionFileFilter#accept(java.io.File)}.
*/
public void testNormalExtensionAccept() {
File file = new File(".gif");
ExtensionFileFilter filter = new ExtensionFileFilter();
assertFalse("The gif extension should is not allowed", filter.accept(file));
filter.addExtension(".gif");
assertTrue("The gif extension should is allowed", filter.accept(file));
filter.addExtension("dgsagdsa,dgsagsag.gdsag,.gif");
assertTrue("The gif extension should is allowed", filter.accept(file));
}
}
相应的目标测试代码如下:
/**
* Copyright(c) 2005 Ceno Techonologies, Ltd.
*
* History:
* 2006-7-4 下午01:20:47 Created by guyang
*/
package com.numen.sessionframework.common.io;
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;
/**
* 文件过滤器,用于过来特定的文件扩展名。
*
* @author <a href="mailto:hyysguyang@163.com">guyang</a>
* @version 1.0 2006-7-4 下午01:20:47
*/
public class ExtensionFileFilter implements FileFilter {
/**
* 扩展名列表
*/
private List<String> extensionList = new ArrayList<String>();
/**
* 用于分隔用户扩展名的分隔符
*/
private String separator = ",";
public ExtensionFileFilter() {
}
/**
* todo 缺少方法注释,通常写“构造”。
*
* @param extensions 添加要过滤的扩展名,多个扩展名之间用分隔符隔开
*/
public ExtensionFileFilter(String extensions) {
this.addExtension(extensions);
}
/**
* 添加要过滤的扩展名,多个扩展名之间用分隔符隔开
*
* @param extensions 要过滤的扩展名
*/
public void addExtension(String extensions) {
if (null == extensions || "".equals(extensions)) {
return;
}
String[] tempExtentionS = extensions.split(separator);
for (String extension : tempExtentionS) {
if (isValidExtension(extension)) {
this.extensionList.add(extension);
}
}
}
/**
* 判断是否是有效的扩展文件名
*
* @param extension 扩展名
* @return todo 缺少返回值注释
*/
private boolean isValidExtension(String extension) {
return !(null == extension || "".equals(extension) || !extension.startsWith("."));
// return extensions.indexOf(".")>=0;
}
/**
* 删除不需要过滤的扩展名,多个扩展名之间用分隔符隔开
*
* @param extensions 扩展名
*/
public void removeExtension(String extensions) {
if (null == extensions || "".equals(extensions)) {
return;
}
String[] tempExtentionS = extensions.split(separator);
for (String extension : tempExtentionS) {
if (isValidExtension(extension) && extensionList.contains(extension)) {
extensionList.remove(extension);
}
}
}
public boolean accept(File file) {
if (file.isDirectory()) {
return false;
}
String name = file.getName();
int index = name.lastIndexOf(".");
if (index == -1 || index == name.length() - 1) {
return false;
}
return this.extensionList.contains(name.substring(index));
}
/**
* @return the extensionList
*/
public List<String> getExtensionList() {
return extensionList;
}
/**
* @param extensionList the extensionList to set
*/
public void setExtensionList(List<String> extensionList) {
this.extensionList = extensionList;
}
/**
* @return the separator
*/
public String getSeparator() {
return separator;
}
/**
* @param separator the separator to set
*/
public void setSeparator(String separator) {
this.separator = separator;
}
}
发表评论
- 浏览: 24601 次
- 性别:


- 详细资料
搜索本博客
最近加入圈子
最新评论
-
这样的TDD实践方式有问题 ...
gigix 写道马伟 写道也不准你递归 , 用递归就是把循环给转移了位置而已 你 ...
-- by 马伟 -
这样的TDD实践方式有问题 ...
马伟 写道也不准你递归 , 用递归就是把循环给转移了位置而已 你这说法就不对了。 ...
-- by gigix -
这样的TDD实践方式有问题 ...
gigix 写道ball_cao 写道这个帖子让我想起以前的一个面试题:给出n要 ...
-- by 马伟 -
这样的TDD实践方式有问题 ...
ball_cao 写道这个帖子让我想起以前的一个面试题:给出n要求计算1到n的和 ...
-- by gigix -
这样的TDD实践方式有问题 ...
强帖虽然我们不用TDD,连单元测试都不用(惭愧~)一定要好好学习之,也体会一下其 ...
-- by 雁行






评论排行榜