// Path: src/main/java/com/technofovea/hllib/enums/PackageType.java
// public enum PackageType implements JnaEnum<PackageType> {
// 
//     NONE,
//     BSP,
//     GCF,
//     PAK,
//     VBSP,
//     WAD,
//     XZP,
//     ZIP,
//     NCF,
//     VPK;
//     
//     private static int start = 0;
// 
//     public int getIntValue() {
//         return this.ordinal() + start;
//     }
// 
//     public PackageType getForValue(
//             int i) {
//         for (PackageType o : this.values()) {
//             if (o.getIntValue() == i) {
//                 return o;
//             }
// 
//         }
//         return null;
//     }
// }
// 
// Path: src/main/java/com/technofovea/hllib/masks/FileMode.java
// public class FileMode extends MappedMask{
//     
// 	public static final int INDEX_MODE_READ= 0;
// 	public static final int INDEX_MODE_WRITE= 1;
// 	public static final int INDEX_MODE_CREATE= 2;
// 	public static final int INDEX_MODE_VOLATILE= 3;
// 	public static final int INDEX_MODE_NO_FILEMAPPING= 4;
// 	public static final int INDEX_MODE_QUICK_FILEMAPPING= 5;
// 
// }
// 
// Path: src/main/java/com/technofovea/hllib/masks/FindType.java
// public class FindType extends BitSet implements NativeMapped{
//     	    	
//         public static final int HL_FIND_FILES= 0;
// 	public static final int HL_FIND_FOLDERS= 1;
// 	public static final int HL_FIND_NO_RECURSE= 2;
// 	public static final int HL_FIND_CASE_SENSITIVE= 3;
// 	public static final int HL_FIND_MODE_STRING= 4;
// 	public static final int HL_FIND_MODE_SUBSTRING= 5;
// 
//     public int toInt(){
//         int val =0;
//         for(int i = 0; i < this.length(); i++){
//             if(this.get(i)){
//                 val += (1<<i);
//             }
//         }
//         return val;
//     }
// 
//     public void fromInt(int intValue){
//         this.clear();
//         int max = 0;
//         while(1<<max < intValue){
//             max++;
//         }
// 
//         for(int i=max; i > 0; i--){
//             int part = 1<<i;
//             if(part <= intValue){
//                 intValue -= part;
//                 this.set(i,true);
//             }
//         }
//     }
// 
// 
//     public Object toNative() {
//         return this.toInt();
//     }
// 
//     public Object fromNative(Object arg0, FromNativeContext arg1) {
//         Integer i = (Integer)arg0;
//         FindType fm = new FindType();
//         fm.fromInt(i);
//         return fm;
//     }
// 
//     public Class nativeType() {
//         return Integer.class;
//     }
// 
// 
// }
// 
// Path: src/main/java/com/technofovea/hllib/methods/FullLibrary.java
// public interface FullLibrary extends BasicLibrary {
// 
//     /**
//      * Called to initialize the DLL library.
//      */
//     public void initialize();
// 
//     /**
//      * Called to shut down the DLL library.
//      */
//     public void shutdown();
// 
//     public boolean itemGetSize(DirectoryItem item, IntByReference size);
// 
//     public boolean itemGetSizeEx(DirectoryItem item, LongByReference size);
// 
//     public boolean itemGetSizeOnDisk(DirectoryItem item, IntByReference size);
// 
//     public boolean itemGetSizeOnDiskEx(DirectoryItem item, LongByReference size);
// 
//     public void itemGetPath(DirectoryItem item, byte[] buffer, int bufsize);
// 
//     public boolean createPackage(PackageType ePackageType, IntByReference packageId);
// 
//     public void packageClose();
// 
//     public void deletePackage(HlPackage pkg);
// 
//     public boolean packageGetExtractable(DirectoryItem file, ByteByReference extractable);
// 
//     public boolean packageGetFileSize(DirectoryItem file, IntByReference size);
// 
//     public boolean packageGetFileSizeOnDisk(DirectoryItem file, IntByReference size);
// 
//     public boolean packageCreateStream(DirectoryItem file, PointerByReference stream);
// 
//     public boolean fileCreateStream(DirectoryItem item, PointerByReference stream);
// }
// 
// Path: src/main/java/com/technofovea/hllib/methods/ManagedLibrary.java
// public interface ManagedLibrary extends BasicLibrary, ManagedCalls{       
// 
// }


import com.sun.jna.Memory;
import com.technofovea.hllib.enums.PackageType;
import com.technofovea.hllib.masks.FileMode;
import com.technofovea.hllib.masks.FindType;
import com.technofovea.hllib.methods.FullLibrary;
import com.technofovea.hllib.methods.ManagedLibrary;
import java.io.File;
import java.io.FileInputStream;
import java.net.URL;
import junit.framework.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

        boolean r_open = lib.packageOpenFile(target.getAbsolutePath(), fm);
        Assert.assertTrue(r_open);

        return pkg;
    }

    @Test
    public void testGcfListing() throws Exception {

        URL testurl = GcfFinder.getTestGcf();
        File testfile = new File(testurl.toURI());


        HlPackage pkg = openFile(fixture, testfile);

        String[] existingItems = new String[]{
            "root\\valve\\cl_dlls\\GameUI.dll",
            "root\\valve\\cl_dlls\\particleman.dll",
        };
        String[] absentItems = new String[]{
            "root\\valve\\cl_dlls\\MissingFile.txt",
            "root\\valve\\particleman.dll",
            "root\\PARTICLEMAN.DLL",
            "PARTICLEMAN.DLL",
        };
        
      
        DirectoryItem root = fixture.packageGetRoot();

// Path: src/main/java/com/technofovea/hllib/enums/PackageType.java
// public enum PackageType implements JnaEnum<PackageType> {
// 
//     NONE,
//     BSP,
//     GCF,
//     PAK,
//     VBSP,
//     WAD,
//     XZP,
//     ZIP,
//     NCF,
//     VPK;
//     
//     private static int start = 0;
// 
//     public int getIntValue() {
//         return this.ordinal() + start;
//     }
// 
//     public PackageType getForValue(
//             int i) {
//         for (PackageType o : this.values()) {
//             if (o.getIntValue() == i) {
//                 return o;
//             }
// 
//         }
//         return null;
//     }
// }
// 
// Path: src/main/java/com/technofovea/hllib/masks/FileMode.java
// public class FileMode extends MappedMask{
//     
// 	public static final int INDEX_MODE_READ= 0;
// 	public static final int INDEX_MODE_WRITE= 1;
// 	public static final int INDEX_MODE_CREATE= 2;
// 	public static final int INDEX_MODE_VOLATILE= 3;
// 	public static final int INDEX_MODE_NO_FILEMAPPING= 4;
// 	public static final int INDEX_MODE_QUICK_FILEMAPPING= 5;
// 
// }
// 
// Path: src/main/java/com/technofovea/hllib/masks/FindType.java
// public class FindType extends BitSet implements NativeMapped{
//     	    	
//         public static final int HL_FIND_FILES= 0;
// 	public static final int HL_FIND_FOLDERS= 1;
// 	public static final int HL_FIND_NO_RECURSE= 2;
// 	public static final int HL_FIND_CASE_SENSITIVE= 3;
// 	public static final int HL_FIND_MODE_STRING= 4;
// 	public static final int HL_FIND_MODE_SUBSTRING= 5;
// 
//     public int toInt(){
//         int val =0;
//         for(int i = 0; i < this.length(); i++){
//             if(this.get(i)){
//                 val += (1<<i);
//             }
//         }
//         return val;
//     }
// 
//     public void fromInt(int intValue){
//         this.clear();
//         int max = 0;
//         while(1<<max < intValue){
//             max++;
//         }
// 
//         for(int i=max; i > 0; i--){
//             int part = 1<<i;
//             if(part <= intValue){
//                 intValue -= part;
//                 this.set(i,true);
//             }
//         }
//     }
// 
// 
//     public Object toNative() {
//         return this.toInt();
//     }
// 
//     public Object fromNative(Object arg0, FromNativeContext arg1) {
//         Integer i = (Integer)arg0;
//         FindType fm = new FindType();
//         fm.fromInt(i);
//         return fm;
//     }
// 
//     public Class nativeType() {
//         return Integer.class;
//     }
// 
// 
// }
// 
// Path: src/main/java/com/technofovea/hllib/methods/FullLibrary.java
// public interface FullLibrary extends BasicLibrary {
// 
//     /**
//      * Called to initialize the DLL library.
//      */
//     public void initialize();
// 
//     /**
//      * Called to shut down the DLL library.
//      */
//     public void shutdown();
// 
//     public boolean itemGetSize(DirectoryItem item, IntByReference size);
// 
//     public boolean itemGetSizeEx(DirectoryItem item, LongByReference size);
// 
//     public boolean itemGetSizeOnDisk(DirectoryItem item, IntByReference size);
// 
//     public boolean itemGetSizeOnDiskEx(DirectoryItem item, LongByReference size);
// 
//     public void itemGetPath(DirectoryItem item, byte[] buffer, int bufsize);
// 
//     public boolean createPackage(PackageType ePackageType, IntByReference packageId);
// 
//     public void packageClose();
// 
//     public void deletePackage(HlPackage pkg);
// 
//     public boolean packageGetExtractable(DirectoryItem file, ByteByReference extractable);
// 
//     public boolean packageGetFileSize(DirectoryItem file, IntByReference size);
// 
//     public boolean packageGetFileSizeOnDisk(DirectoryItem file, IntByReference size);
// 
//     public boolean packageCreateStream(DirectoryItem file, PointerByReference stream);
// 
//     public boolean fileCreateStream(DirectoryItem item, PointerByReference stream);
// }
// 
// Path: src/main/java/com/technofovea/hllib/methods/ManagedLibrary.java
// public interface ManagedLibrary extends BasicLibrary, ManagedCalls{       
// 
// }


// Path: src/test/java/com/technofovea/hllib/FindingTest.java
import com.sun.jna.Memory;
import com.technofovea.hllib.enums.PackageType;
import com.technofovea.hllib.masks.FileMode;
import com.technofovea.hllib.masks.FindType;
import com.technofovea.hllib.methods.FullLibrary;
import com.technofovea.hllib.methods.ManagedLibrary;
import java.io.File;
import java.io.FileInputStream;
import java.net.URL;
import junit.framework.Assert;
import org.junit.BeforeClass;
import org.junit.Test;


        boolean r_open = lib.packageOpenFile(target.getAbsolutePath(), fm);
        Assert.assertTrue(r_open);

        return pkg;
    }

    @Test
    public void testGcfListing() throws Exception {

        URL testurl = GcfFinder.getTestGcf();
        File testfile = new File(testurl.toURI());


        HlPackage pkg = openFile(fixture, testfile);

        String[] existingItems = new String[]{
            "root\\valve\\cl_dlls\\GameUI.dll",
            "root\\valve\\cl_dlls\\particleman.dll",
        };
        String[] absentItems = new String[]{
            "root\\valve\\cl_dlls\\MissingFile.txt",
            "root\\valve\\particleman.dll",
            "root\\PARTICLEMAN.DLL",
            "PARTICLEMAN.DLL",
        };
        
      
        DirectoryItem root = fixture.packageGetRoot();

        FindType ft = new FindType();