// Path: src/main/java/org/rockm/blink/BlinkRequest.java
// public interface BlinkRequest {
// 
//     /**
//      * @return Request body as string
//      */
//     String body();
// 
//     /**
//      * Allow to retrieve query parameters
//      * @param name The name of the parameter
//      * @return The value of the specific parameter
//      */
//     String param(String name);
// 
//     /**
//      * Retrieve path parameters
//      * @param name The name of the parameter
//      * @return The value of the specific parameter
//      */
//     String pathParam(String name);
// 
//     /**
//      * @return request uri
//      */
//     URI uri();
// 
//     /**
//      * Retrieve header values
//      * @param name header name
//      * @return header's value
//      */
//     String header(String name);
// 
//     class HeaderNotFoundException extends BlinkException {
// 
//         public HeaderNotFoundException(String message) {
//             super(message);
//         }
//     }
// 
//     /**
//      *  Retrieve a specific cookie value
//      * @param name of cookie
//      * @return cookie's value
//      */
//     String cookie(String name);
// 
// }
// 
// Path: src/main/java/org/rockm/blink/BlinkResponse.java
// public interface BlinkResponse {
// 
//     /**
//      * Set the response status code
//      * @param statusCode
//      */
//     void status(int statusCode);
// 
//     /**
//      * Add a response header
//      * @param name header's name
//      * @param value header's value
//      */
//     void header(String name, String value);
// 
//     /**
//      * Set the content tyoe of the response
//      * @param contentType
//      */
//     void type(String contentType);
// 
//     /**
//      * Add a response cookie
//      * @param name
//      * @param value
//      */
//     void cookie(String name, String value);
// }
// 
// Path: src/main/java/org/rockm/blink/ExceptionHandler.java
// public class ExceptionHandler {
//     public static final int BAD_REQUEST = 400;
//     public static final int NOT_FOUND = 404;
//     public static final int SERVER_ERROR = 500;
// 
//     private static final Map<Class<? extends Exception>, Integer> expToStatus = new HashMap<>();
// 
//     static {
//         expToStatus.put(BlinkRequest.HeaderNotFoundException.class, BAD_REQUEST);
//         expToStatus.put(RouteNotFoundException.class, NOT_FOUND);
//     }
// 
//     public Object handle(Exception e, BlinkRequest request, BlinkResponse response) {
//         response.status(expToStatus.getOrDefault(e.getClass(), SERVER_ERROR));
//         return e.getMessage();
//     }
// 
// }


import org.junit.Test;
import org.rockm.blink.BlinkRequest;
import org.rockm.blink.BlinkResponse;
import org.rockm.blink.ExceptionHandler;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
package test.org.rockm.blink;



public class ExceptionHandlerTest {

    private static final String ERROR_MESSAGE = "message";

// Path: src/main/java/org/rockm/blink/BlinkRequest.java
// public interface BlinkRequest {
// 
//     /**
//      * @return Request body as string
//      */
//     String body();
// 
//     /**
//      * Allow to retrieve query parameters
//      * @param name The name of the parameter
//      * @return The value of the specific parameter
//      */
//     String param(String name);
// 
//     /**
//      * Retrieve path parameters
//      * @param name The name of the parameter
//      * @return The value of the specific parameter
//      */
//     String pathParam(String name);
// 
//     /**
//      * @return request uri
//      */
//     URI uri();
// 
//     /**
//      * Retrieve header values
//      * @param name header name
//      * @return header's value
//      */
//     String header(String name);
// 
//     class HeaderNotFoundException extends BlinkException {
// 
//         public HeaderNotFoundException(String message) {
//             super(message);
//         }
//     }
// 
//     /**
//      *  Retrieve a specific cookie value
//      * @param name of cookie
//      * @return cookie's value
//      */
//     String cookie(String name);
// 
// }
// 
// Path: src/main/java/org/rockm/blink/BlinkResponse.java
// public interface BlinkResponse {
// 
//     /**
//      * Set the response status code
//      * @param statusCode
//      */
//     void status(int statusCode);
// 
//     /**
//      * Add a response header
//      * @param name header's name
//      * @param value header's value
//      */
//     void header(String name, String value);
// 
//     /**
//      * Set the content tyoe of the response
//      * @param contentType
//      */
//     void type(String contentType);
// 
//     /**
//      * Add a response cookie
//      * @param name
//      * @param value
//      */
//     void cookie(String name, String value);
// }
// 
// Path: src/main/java/org/rockm/blink/ExceptionHandler.java
// public class ExceptionHandler {
//     public static final int BAD_REQUEST = 400;
//     public static final int NOT_FOUND = 404;
//     public static final int SERVER_ERROR = 500;
// 
//     private static final Map<Class<? extends Exception>, Integer> expToStatus = new HashMap<>();
// 
//     static {
//         expToStatus.put(BlinkRequest.HeaderNotFoundException.class, BAD_REQUEST);
//         expToStatus.put(RouteNotFoundException.class, NOT_FOUND);
//     }
// 
//     public Object handle(Exception e, BlinkRequest request, BlinkResponse response) {
//         response.status(expToStatus.getOrDefault(e.getClass(), SERVER_ERROR));
//         return e.getMessage();
//     }
// 
// }


// Path: src/test/java/test/org/rockm/blink/ExceptionHandlerTest.java
import org.junit.Test;
import org.rockm.blink.BlinkRequest;
import org.rockm.blink.BlinkResponse;
import org.rockm.blink.ExceptionHandler;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;

package test.org.rockm.blink;



public class ExceptionHandlerTest {

    private static final String ERROR_MESSAGE = "message";

    private final BlinkRequest request = mock(BlinkRequest.class);