/*
 * InvertedIndexKeyTest
 * InvertedIndexKeyクラスのテストケース
 */
package org.logical_paradox.fts;

import junit.framework.TestCase;

public class InvertedIndexKeyTest extends TestCase {
	public InvertedIndexKeyTest( String name ) {
		super( name );
	}

	// 正常系のテスト(セット)
	public void testInvertedIndexKeySuccess1() throws Exception {
		for( int i = 0; i < 63; i++ ) {
			InvertedIndexKey idxr = new InvertedIndexKey("");
			idxr.setIndexTermOnDocument( i, true );
			assertTrue( "セット[" + i + "]", idxr.isTermFoundInDocument( i ) == true );
		}
	}
	public void testInvertedIndexKeySuccess2() throws Exception {
		for( int i = 0; i < 63; i++ ) {
			InvertedIndexKey idxr = new InvertedIndexKey("");
			idxr.setIndexTermOnDocument( i, true );
			idxr.setIndexTermOnDocument( i, false );
			assertTrue( "リセット[" + i + "]", idxr.isTermFoundInDocument( i ) == false );
		}
	}

	// 障害系のテスト
	public void testInvertedIndexKeyFail1() throws Exception {
		// アンダーフローテスト
		try {
			InvertedIndexKey idxr = new InvertedIndexKey("");
			idxr.setIndexTermOnDocument(-1, true);
			fail( "アンダーフローテストで正しく例外が発生しませんでした" );
		} catch( IllegalArgumentException e1 ) {
			// 例外が発生するのが正しいので，何もしない
		}

		// オーバーフローテスト
		try {
			InvertedIndexKey idxr = new InvertedIndexKey("");
			idxr.setIndexTermOnDocument(64, true);
			fail( "オーバーフローテストで正しく例外が発生しませんでした" );
		} catch( IllegalArgumentException e2 ) {
			// 例外が発生するのが正しいので，何もしない
		}
	}
	public void testInvertedIndexKeyFail2() throws Exception {
		// アンダーフローテスト
		try {
			InvertedIndexKey idxr = new InvertedIndexKey("");
			idxr.setIndexTermOnDocument(-1, false);
			fail( "アンダーフローテストで正しく例外が発生しませんでした" );
		} catch( IllegalArgumentException e1 ) {
			// 例外が発生するのが正しいので，何もしない
		}

		// オーバーフローテスト
		try {
			InvertedIndexKey idxr = new InvertedIndexKey("");
			idxr.setIndexTermOnDocument(64, false);
			fail( "オーバーフローテストで正しく例外が発生しませんでした" );
		} catch( IllegalArgumentException e2 ) {
			// 例外が発生するのが正しいので，何もしない
		}
	}
}

// end of InvertedIndexKeyTest.java
