// Path: src/main/java/de/danielbasedow/prospecter/core/MatchCondition.java
// public enum MatchCondition {
//     EQUALS,
//     LESS_THAN,
//     GREATER_THAN,
//     LESS_THAN_EQUALS,
//     GREATER_THAN_EQUALS,
//     NONE,
//     IN,
//     RADIUS
// }
// 
// Path: src/main/java/de/danielbasedow/prospecter/core/query/QueryPosting.java
// public class QueryPosting {
//     public static final int QUERY_ID_INDEX = 0;
//     public static final int QUERY_BIT_INDEX = 1;
//     public static final int QUERY_NOT_INDEX = 2;
// 
//     private final int queryId;
//     private final short queryBit;
// 
//     public QueryPosting(int queryId, short queryBit) {
//         this.queryId = queryId;
//         this.queryBit = queryBit;
//     }
// 
//     public int getQueryId() {
//         return queryId;
//     }
// 
//     public short getQueryBit() {
//         return queryBit;
//     }
// 
//     public long getPackedPosting() {
//         return pack(queryId, queryBit, false);
//     }
// 
//     public static long pack(int queryId, int queryBit, boolean notFlag) {
//         int not = notFlag ? 1 : 0;
// 
//         return (((long) queryId) << 32) | ((queryBit << 1 ) & 0xfffffffeL) | ((long) not & 0x00000001L);
//     }
// 
//     public static int[] unpack(long posting) {
//         return new int[]{
//                 (int) (posting >> 32),
//                 (int) ((posting) & 0xfffffffel) >> 1,
//                 (int) ((posting) & 0x00000001l)
//         };
//     }
// }
// 
// Path: src/main/java/de/danielbasedow/prospecter/core/Token.java
// public class Token<T> {
//     private final T token;
//     private final MatchCondition condition;
// 
//     public Token(T token) {
//         this(token, MatchCondition.NONE);
//     }
// 
//     public Token(T token, MatchCondition condition) {
//         this.token = token;
//         this.condition = condition;
//     }
// 
//     public T getToken() {
//         return token;
//     }
// 
//     public int hashCode() {
//         return token.hashCode();
//     }
// 
//     public boolean equals(Object compare) {
//         if (compare instanceof Token) {
//             return token.equals(((Token) compare).getToken());
//         }
//         return false;
//     }
// 
//     public MatchCondition getCondition() {
//         return condition;
//     }
// }


import de.danielbasedow.prospecter.core.MatchCondition;
import de.danielbasedow.prospecter.core.query.QueryPosting;
import de.danielbasedow.prospecter.core.Token;
import junit.framework.TestCase;
package de.danielbasedow.prospecter.core.index;


public class FullTextIndexTest extends TestCase {
    public void test() {
        FullTextIndex ft = new FullTextIndex("_all", null);
        assertEquals(0, ft.index.size());
        Token token = new Token<Integer>(1, MatchCondition.EQUALS);
// Path: src/main/java/de/danielbasedow/prospecter/core/MatchCondition.java
// public enum MatchCondition {
//     EQUALS,
//     LESS_THAN,
//     GREATER_THAN,
//     LESS_THAN_EQUALS,
//     GREATER_THAN_EQUALS,
//     NONE,
//     IN,
//     RADIUS
// }
// 
// Path: src/main/java/de/danielbasedow/prospecter/core/query/QueryPosting.java
// public class QueryPosting {
//     public static final int QUERY_ID_INDEX = 0;
//     public static final int QUERY_BIT_INDEX = 1;
//     public static final int QUERY_NOT_INDEX = 2;
// 
//     private final int queryId;
//     private final short queryBit;
// 
//     public QueryPosting(int queryId, short queryBit) {
//         this.queryId = queryId;
//         this.queryBit = queryBit;
//     }
// 
//     public int getQueryId() {
//         return queryId;
//     }
// 
//     public short getQueryBit() {
//         return queryBit;
//     }
// 
//     public long getPackedPosting() {
//         return pack(queryId, queryBit, false);
//     }
// 
//     public static long pack(int queryId, int queryBit, boolean notFlag) {
//         int not = notFlag ? 1 : 0;
// 
//         return (((long) queryId) << 32) | ((queryBit << 1 ) & 0xfffffffeL) | ((long) not & 0x00000001L);
//     }
// 
//     public static int[] unpack(long posting) {
//         return new int[]{
//                 (int) (posting >> 32),
//                 (int) ((posting) & 0xfffffffel) >> 1,
//                 (int) ((posting) & 0x00000001l)
//         };
//     }
// }
// 
// Path: src/main/java/de/danielbasedow/prospecter/core/Token.java
// public class Token<T> {
//     private final T token;
//     private final MatchCondition condition;
// 
//     public Token(T token) {
//         this(token, MatchCondition.NONE);
//     }
// 
//     public Token(T token, MatchCondition condition) {
//         this.token = token;
//         this.condition = condition;
//     }
// 
//     public T getToken() {
//         return token;
//     }
// 
//     public int hashCode() {
//         return token.hashCode();
//     }
// 
//     public boolean equals(Object compare) {
//         if (compare instanceof Token) {
//             return token.equals(((Token) compare).getToken());
//         }
//         return false;
//     }
// 
//     public MatchCondition getCondition() {
//         return condition;
//     }
// }


// Path: src/test/java/de/danielbasedow/prospecter/core/index/FullTextIndexTest.java
import de.danielbasedow.prospecter.core.MatchCondition;
import de.danielbasedow.prospecter.core.query.QueryPosting;
import de.danielbasedow.prospecter.core.Token;
import junit.framework.TestCase;

package de.danielbasedow.prospecter.core.index;


public class FullTextIndexTest extends TestCase {
    public void test() {
        FullTextIndex ft = new FullTextIndex("_all", null);
        assertEquals(0, ft.index.size());
        Token token = new Token<Integer>(1, MatchCondition.EQUALS);
        ft.addPosting(token, QueryPosting.pack(1, 1, false));