package pta.de.core.exceptions;


import org.eclipse.jetty.http.HttpStatus;
import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class HttpStatusExceptionTest {
    @Test
    public void testAll() {
        HttpStatusException hse = new HttpStatusException( 200 );
        assertEquals( hse.getHttpStatus(), HttpStatus.OK_200);
    }
}
