// Path: jpathwatch-java/src/main/java/name/pachler/nio/file/impl/BSD.java
// 	public static class kevent{
// 		static class IntStringMapping{
// 			int i;
// 			String s;
// 			IntStringMapping(int i, String s){
// 				this.i = i;
// 				this.s = s;
// 			}
// 		}
// 
// 		IntStringMapping [] flagsMapping = {
// 			new IntStringMapping(BSD.EV_ADD, "EV_ADD"),
// 			new IntStringMapping(BSD.EV_ENABLE, "EV_ENABLE"),
// 			new IntStringMapping(BSD.EV_DISABLE, "EV_DISABLE"),
// 			new IntStringMapping(BSD.EV_DELETE, "EV_DELETE"),
// 			new IntStringMapping(BSD.EV_CLEAR, "EV_CLEAR"),
// 			new IntStringMapping(BSD.EV_ONESHOT, "EV_ONESHOT"),
// 			new IntStringMapping(BSD.EV_EOF, "EV_EOF"),
// 			new IntStringMapping(BSD.EV_ERROR, "EV_ERROR"),
// 		};
// 
// 		IntStringMapping [] vnodeNoteMapping = {
// 			new IntStringMapping(BSD.NOTE_DELETE, "NOTE_DELETE"),
// 			new IntStringMapping(BSD.NOTE_WRITE, "NOTE_WRITE"),
// 			new IntStringMapping(BSD.NOTE_EXTEND, "NOTE_EXTEND"),
// 			new IntStringMapping(BSD.NOTE_ATTRIB, "NOTE_ATTRIB"),
// 			new IntStringMapping(BSD.NOTE_LINK, "NOTE_LINK"),
// 			new IntStringMapping(BSD.NOTE_RENAME, "NOTE_RENAME"),
// 			new IntStringMapping(BSD.NOTE_REVOKE, "NOTE_REVOKE"),
// 		};
// 		IntStringMapping [] procNoteMapping = {
// 			new IntStringMapping(BSD.NOTE_EXIT, "NOTE_EXIT"),
// 			new IntStringMapping(BSD.NOTE_FORK, "NOTE_FORK"),
// 			new IntStringMapping(BSD.NOTE_EXEC, "NOTE_EXEC"),
// 			new IntStringMapping(BSD.NOTE_TRACK, "NOTE_TRACK"),
// 			new IntStringMapping(BSD.NOTE_TRACKERR, "NOTE_TRACKERR"),
// 		};
// /*		IntStringMapping [] netdevNoteMapping = {
// 			new IntStringMapping(BSD.NOTE_LINKUP, "NOTE_LINKUP"),
// 			new IntStringMapping(BSD.NOTE_LINKDOWN, "NOTE_LINKDOWN"),
// 			new IntStringMapping(BSD.NOTE_LINKINV, "NOTE_LINKINV"),
// 		};
// */
// 		private long peer = createPeer();
// 
// 		private static native void initNative();
// 		private static native long createPeer();
// 		private static native void destroyPeer(long peer);
// 
// 		static
// 		{
// 			initNative();
// 		}
// 
// 		@Override
// 		protected void finalize() throws Throwable {
// 			try {
// 				destroyPeer(peer);
// 				peer = 0;
// 			}finally{
// 				super.finalize();
// 			}
// 		}
// 
// 
// 		public native long get_ident();
// 		public native void set_ident(long ident);
// 
// 		public native short get_filter();
// 		public native void set_filter(short filter);
// 
// 		public native short get_flags();
// 		public native void set_flags(short flags);
// 
// 		public native int get_fflags();
// 		public native void set_fflags(int fflags);
// 
// 		public native long get_data();
// 		public native void set_data(long data);
// 
// 		public native Object get_udata();
// 		public native void set_udata(Object udata);
// 
// 		private String bitmaskToString(int value, IntStringMapping[] mapping){
// 			String bitmaskString = "";
// 			for(int i=0; i<mapping.length; ++i){
// 				if((value & mapping[i].i) != 0){
// 					if(bitmaskString.length()!=0)
// 						bitmaskString += '|';
// 					bitmaskString += mapping[i].s;
// 				}
// 			}
// 			return bitmaskString;
// 		}
// 
// 		@Override
// 		public String toString(){
// 			String flags = bitmaskToString(get_flags(), flagsMapping);
// 			String filter = "?";
// 			String fflags = "?";
// 			if(get_filter()==BSD.EVFILT_VNODE)
// 			{
// 				fflags = bitmaskToString(get_fflags(), vnodeNoteMapping);
// 				filter = "EVFILT_VNODE";
// 			}
// 			else if(get_filter()==BSD.EVFILT_PROC)
// 			{
// 				fflags = bitmaskToString(get_fflags(), procNoteMapping);
// 				filter = "EVFILT_PROC";
// 			}
// 			return "{ident="+get_ident()+";filter="+filter+";flags="+flags+";fflags="+fflags+";data="+get_data()+";udata="+get_udata()+"}";
// 		}
// 	};


import name.pachler.nio.file.impl.BSD.kevent;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
        int kqueueFD = BSD.kqueue();
        assertFalse(kqueueFD == -1);    // may not return error

        // clean up
        BSD.close(kqueueFD);
    }

	@Test
	public void testKqueueInThread() throws InterruptedException{
//int kqueueFD = BSD.kqueue();
        System.out.println("kevent in thread");
		Thread t = new Thread(new Runnable(){

			public void run() {
				testKqueue();
			}

		});
		t.start();
		t.join();
	}

    /**
     * Test of kevent method, of class BSD.
     */
    @Test
    public void testKevent() {
		if(!isBSD())
			return;	// only run this on BSD

// Path: jpathwatch-java/src/main/java/name/pachler/nio/file/impl/BSD.java
// 	public static class kevent{
// 		static class IntStringMapping{
// 			int i;
// 			String s;
// 			IntStringMapping(int i, String s){
// 				this.i = i;
// 				this.s = s;
// 			}
// 		}
// 
// 		IntStringMapping [] flagsMapping = {
// 			new IntStringMapping(BSD.EV_ADD, "EV_ADD"),
// 			new IntStringMapping(BSD.EV_ENABLE, "EV_ENABLE"),
// 			new IntStringMapping(BSD.EV_DISABLE, "EV_DISABLE"),
// 			new IntStringMapping(BSD.EV_DELETE, "EV_DELETE"),
// 			new IntStringMapping(BSD.EV_CLEAR, "EV_CLEAR"),
// 			new IntStringMapping(BSD.EV_ONESHOT, "EV_ONESHOT"),
// 			new IntStringMapping(BSD.EV_EOF, "EV_EOF"),
// 			new IntStringMapping(BSD.EV_ERROR, "EV_ERROR"),
// 		};
// 
// 		IntStringMapping [] vnodeNoteMapping = {
// 			new IntStringMapping(BSD.NOTE_DELETE, "NOTE_DELETE"),
// 			new IntStringMapping(BSD.NOTE_WRITE, "NOTE_WRITE"),
// 			new IntStringMapping(BSD.NOTE_EXTEND, "NOTE_EXTEND"),
// 			new IntStringMapping(BSD.NOTE_ATTRIB, "NOTE_ATTRIB"),
// 			new IntStringMapping(BSD.NOTE_LINK, "NOTE_LINK"),
// 			new IntStringMapping(BSD.NOTE_RENAME, "NOTE_RENAME"),
// 			new IntStringMapping(BSD.NOTE_REVOKE, "NOTE_REVOKE"),
// 		};
// 		IntStringMapping [] procNoteMapping = {
// 			new IntStringMapping(BSD.NOTE_EXIT, "NOTE_EXIT"),
// 			new IntStringMapping(BSD.NOTE_FORK, "NOTE_FORK"),
// 			new IntStringMapping(BSD.NOTE_EXEC, "NOTE_EXEC"),
// 			new IntStringMapping(BSD.NOTE_TRACK, "NOTE_TRACK"),
// 			new IntStringMapping(BSD.NOTE_TRACKERR, "NOTE_TRACKERR"),
// 		};
// /*		IntStringMapping [] netdevNoteMapping = {
// 			new IntStringMapping(BSD.NOTE_LINKUP, "NOTE_LINKUP"),
// 			new IntStringMapping(BSD.NOTE_LINKDOWN, "NOTE_LINKDOWN"),
// 			new IntStringMapping(BSD.NOTE_LINKINV, "NOTE_LINKINV"),
// 		};
// */
// 		private long peer = createPeer();
// 
// 		private static native void initNative();
// 		private static native long createPeer();
// 		private static native void destroyPeer(long peer);
// 
// 		static
// 		{
// 			initNative();
// 		}
// 
// 		@Override
// 		protected void finalize() throws Throwable {
// 			try {
// 				destroyPeer(peer);
// 				peer = 0;
// 			}finally{
// 				super.finalize();
// 			}
// 		}
// 
// 
// 		public native long get_ident();
// 		public native void set_ident(long ident);
// 
// 		public native short get_filter();
// 		public native void set_filter(short filter);
// 
// 		public native short get_flags();
// 		public native void set_flags(short flags);
// 
// 		public native int get_fflags();
// 		public native void set_fflags(int fflags);
// 
// 		public native long get_data();
// 		public native void set_data(long data);
// 
// 		public native Object get_udata();
// 		public native void set_udata(Object udata);
// 
// 		private String bitmaskToString(int value, IntStringMapping[] mapping){
// 			String bitmaskString = "";
// 			for(int i=0; i<mapping.length; ++i){
// 				if((value & mapping[i].i) != 0){
// 					if(bitmaskString.length()!=0)
// 						bitmaskString += '|';
// 					bitmaskString += mapping[i].s;
// 				}
// 			}
// 			return bitmaskString;
// 		}
// 
// 		@Override
// 		public String toString(){
// 			String flags = bitmaskToString(get_flags(), flagsMapping);
// 			String filter = "?";
// 			String fflags = "?";
// 			if(get_filter()==BSD.EVFILT_VNODE)
// 			{
// 				fflags = bitmaskToString(get_fflags(), vnodeNoteMapping);
// 				filter = "EVFILT_VNODE";
// 			}
// 			else if(get_filter()==BSD.EVFILT_PROC)
// 			{
// 				fflags = bitmaskToString(get_fflags(), procNoteMapping);
// 				filter = "EVFILT_PROC";
// 			}
// 			return "{ident="+get_ident()+";filter="+filter+";flags="+flags+";fflags="+fflags+";data="+get_data()+";udata="+get_udata()+"}";
// 		}
// 	};


// Path: jpathwatch-java/src/test/java/name/pachler/nio/file/impl/BSDTest.java
import name.pachler.nio.file.impl.BSD.kevent;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

        int kqueueFD = BSD.kqueue();
        assertFalse(kqueueFD == -1);    // may not return error

        // clean up
        BSD.close(kqueueFD);
    }

	@Test
	public void testKqueueInThread() throws InterruptedException{
//int kqueueFD = BSD.kqueue();
        System.out.println("kevent in thread");
		Thread t = new Thread(new Runnable(){

			public void run() {
				testKqueue();
			}

		});
		t.start();
		t.join();
	}

    /**
     * Test of kevent method, of class BSD.
     */
    @Test
    public void testKevent() {
		if(!isBSD())
			return;	// only run this on BSD

        System.out.println("kevent");