Skip to content

Instantly share code, notes, and snippets.

@tomoyamkung
Created August 22, 2013 06:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tomoyamkung/6303874 to your computer and use it in GitHub Desktop.
Save tomoyamkung/6303874 to your computer and use it in GitHub Desktop.
[Java]AgeFileFilter のサンプルテストケース。
package net.tomoyamkung.org.apache.commons.io.filefilter;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import java.io.File;
import java.util.Calendar;
import java.util.Date;
import org.apache.commons.io.filefilter.AgeFileFilter;
import org.junit.Test;
/**
* AgeFileFilter のサンプルテストケース。
*
* 次のパターンを確認したテストケース。
*
* <ul>
* <li>指定日よりも過去に作成されたファイルを取得する</li>
* <li>指定日よりも未来に作成されたファイルを取得する</li>
* <li>サブディレクトリがある場合に指定日よりも過去に作成されたファイルを取得する</li>
* </ul>
*
* @author tomoyamkung
*
*/
public class AgeFileFilterTest {
/**
* AgeFileFilter の使い方を確認する。
*
* AgeFileFilter のコンストラクタに第2引数を指定しない場合、指定日よりも過去に作成されたファイル一覧を取得することを確認する。
*
* ディレクトリに次のファイルがあった場合、、、
*
* <ul>
* <li>subdir_date_2000_01_01.txt → 2000/01/01 が最終更新日時のファイル</li>
* <li>subdir_date_2005_02_01.txt → 2005/02/01 が最終更新日時のファイル</li>
* <li>subdir_date_2010_03_01.txt → 2010/03/01 が最終更新日時のファイル</li>
* <li>subdir_date_2015_04_01.txt → 2015/04/01 が最終更新日時のファイル</li>
* <li>subdir_date_2020_05_01.txt → 2020/05/01 が最終更新日時のファイル</li>
* </ul>
*
* 上3つのファイルが取得できることを確認する。
*
* @throws Exception
*/
@Test
public void 指定日よりも過去に作成されたファイルを取得する_指定日含む() throws Exception {
// Setup
Date date = getDate(2010, 3, 1, 0, 0, 0); // 指定日を 2010/03/01 0:00:00 にする
File subDir = getSubDir(); // テストするディレクトリを取得する
// Exercise
String[] actual = subDir.list(new AgeFileFilter(date));
// Verify
assertThat("指定日よりも過去のファイルを取得する場合は、指定日のファイルが実行結果に含まれること", actual.length, is(3));
// 検索結果に 2010/03/01 のファイルが含まれること
assertThat(actual[0], is("subdir_date_2000_01_01.txt"));
assertThat(actual[1], is("subdir_date_2005_02_01.txt"));
assertThat(actual[2], is("subdir_date_2010_03_01.txt"));
}
/**
* AgeFileFilter の使い方を確認する。
*
* AgeFileFilter のコンストラクタに第2引数を指定した場合、指定日よりも未来に作成されたファイル一覧を取得することを確認する。
*
* ディレクトリに次のファイルがあった場合、、、
*
* <ul>
* <li>subdir_date_2000_01_01.txt → 2000/01/01 が最終更新日時のファイル</li>
* <li>subdir_date_2005_02_01.txt → 2005/02/01 が最終更新日時のファイル</li>
* <li>subdir_date_2010_03_01.txt → 2010/03/01 が最終更新日時のファイル</li>
* <li>subdir_date_2015_04_01.txt → 2015/04/01 が最終更新日時のファイル</li>
* <li>subdir_date_2020_05_01.txt → 2020/05/01 が最終更新日時のファイル</li>
* </ul>
*
* 下2つのファイルが取得できることを確認する。
*
* @throws Exception
*/
@Test
public void 指定日よりも未来に作成されたファイルを取得する_指定日含まない() throws Exception {
// Setup
Date date = getDate(2010, 3, 1, 0, 0, 0); // 指定日を 2010/03/01 0:00:00 にする
File subDir = getSubDir(); // テストするディレクトリを取得する
// Exercise
String[] actual = subDir.list(new AgeFileFilter(date, false));
// 第2引数に false を指定すると指定日よりも未来に作成されたファイルを取得するようになる
// Verify
assertThat("指定日よりも未来のファイルを取得する場合は、指定日のファイルが実行結果に含まれないこと", actual.length, is(2));
// 検索結果に 2010/03/01 のファイルが含まれないこと
assertThat(actual[0], is("subdir_date_2015_04_01.txt"));
assertThat(actual[1], is("subdir_date_2020_05_01.txt"));
}
/**
* 対象となるディレクトリにサブディレクトリがあった場合の実行結果を確認する。
*
* カレントディレクトリが次のようになっていた場合の動作確認。
*
* <ul>
* <li>date_2000_01_01.txt → 2000/01/01 が最終更新日時のファイル</li>
* <li>date_2005_02_01.txt → 2005/02/01 が最終更新日時のファイル</li>
* <li>date_2010_03_01.txt → 2010/03/01 が最終更新日時のファイル</li>
* <li>date_2015_04_01.txt → 2015/04/01 が最終更新日時のファイル</li>
* <li>date_2020_05_01.txt → 2020/05/01 が最終更新日時のファイル</li>
* <li>subdir</li>
* <ul>
* <li>subdir_date_2000_01_01.txt → 2000/01/01 が最終更新日時のファイル</li>
* <li>subdir_date_2005_02_01.txt → 2005/02/01 が最終更新日時のファイル</li>
* <li>subdir_date_2010_03_01.txt → 2010/03/01 が最終更新日時のファイル</li>
* <li>subdir_date_2015_04_01.txt → 2015/04/01 が最終更新日時のファイル</li>
* <li>subdir_date_2020_05_01.txt → 2020/05/01 が最終更新日時のファイル</li>
* </ul>
* </ul>
*
* @throws Exception
*/
@Test
public void サブディレクトリがある場合に指定日よりも過去に作成されたファイルを取得する() throws Exception {
// Setup
Date date = getDate(2010, 3, 1, 0, 0, 0); // 指定日を 2010/03/01 0:00:00 にする
File dir = getDir(); // テストするディレクトリを取得する
// Exercise
String[] actual = dir.list(new AgeFileFilter(date));
// Verify
assertThat("サブディレクトリに指定日よりも過去のファイルがあっても、検索対象はカレントディレクトリのみである", actual.length, is(3));
assertThat(actual[0], is("date_2000_01_01.txt"));
assertThat(actual[1], is("date_2005_02_01.txt"));
assertThat(actual[2], is("date_2010_03_01.txt"));
}
private File getDir() {
return new File("testdata/org_apache_commons_io_filefilter/age_file_filter_test");
}
private File getSubDir() {
return new File("testdata/org_apache_commons_io_filefilter/age_file_filter_test/subdir");
}
private Date getDate(int year, int month, int date, int hour, int minute, int second) {
Calendar instance = Calendar.getInstance();
instance.set(Calendar.YEAR, year);
instance.set(Calendar.MONTH, month);
instance.set(Calendar.DATE, date);
instance.set(Calendar.HOUR_OF_DAY, hour);
instance.set(Calendar.MINUTE, minute);
instance.set(Calendar.SECOND, second);
return instance.getTime();
}
}
@tomoyamkung
Copy link
Author

テストデータは次のものを用意。

# ls -lR
.:
合計 4
-rw-r--r--  1 tomoyamkung 0 1月   1  2000 date_2000_01_01.txt
-rw-r--r--  1 tomoyamkung 0 2月   1  2005 date_2005_02_01.txt
-rw-r--r--  1 tomoyamkung 0 3月   1  2010 date_2010_03_01.txt
-rw-r--r--  1 tomoyamkung 0 4月   1  2015 date_2015_04_01.txt
-rw-r--r--  1 tomoyamkung 0 5月   1  2020 date_2020_05_01.txt
drwxr-xr-x+ 1 tomoyamkung 0 8月  22 11:39 subdir

./subdir:
合計 0
-rw-r--r-- 1 tomoyamkung 0 1月   1  2000 subdir_date_2000_01_01.txt
-rw-r--r-- 1 tomoyamkung 0 2月   1  2005 subdir_date_2005_02_01.txt
-rw-r--r-- 1 tomoyamkung 0 3月   1  2010 subdir_date_2010_03_01.txt
-rw-r--r-- 1 tomoyamkung 0 4月   1  2015 subdir_date_2015_04_01.txt
-rw-r--r-- 1 tomoyamkung 0 5月   1  2020 subdir_date_2020_05_01.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment