Package http_parser.lolevel

Source Code of http_parser.lolevel.UnitTest

package http_parser.lolevel;

import java.nio.ByteBuffer;
import http_parser.HTTPException;
import http_parser.Util;

public class UnitTest {

  static void p(Object o) {System.out.println(o);}

  public static void testErrorFormat() {
    String bla = "This has an error in position 10 (the n in 'an')";
    ByteBuffer buf = ByteBuffer.wrap(bla.getBytes());
               buf.position(10);
     
    String mes =
"This has an error in position 10 (the n in 'an')\n" +
"..........^";

    check_equals(mes, Util.error ("test error", buf, 0));
  
   
    bla = "123456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789H123456789I123456789J";
    buf = ByteBuffer.wrap(bla.getBytes());
    buf.position(50);
    mes =
"56789B123456789C123456789D123456789E123456789F123456789G123456789H123456\n"+
"....................................^";
    check_equals(mes, Util.error("test trim right and left", buf, 0));


    buf.position(5);
    mes =
"123456789A123456789B123456789C123456789D123456789E123456789F123456789G12\n"+
".....^";
    check_equals(mes, Util.error("test trim right", buf, 0));
  

    int limit = buf.limit();
    buf.limit(10);
    mes =
"123456789A\n"+
".....^";
    check_equals(mes,  Util.error("all before, not enough after", buf, 0));
       


    buf.limit(limit);
    buf.position(90)
    mes =
"9C123456789D123456789E123456789F123456789G123456789H123456789I123456789J\n"+
"..............................................................^";
    check_equals(mes, Util.error("test trim left", buf, 10));      
  }


  // Test that the error callbacks are properly called.
  public static void testErrorCallback () {
      String nothttp   = "THis is certainly not valid HTTP";
      ByteBuffer   buf = ByteBuffer.wrap(nothttp.getBytes());

      ParserSettings s = new ParserSettings();
                     s.on_error = new HTTPErrorCallback() {
        public void cb (HTTPParser p, String mes, ByteBuffer buf, int pos) {
          throw new HTTPException(mes);
        }         
                     }; // err callback
     

      HTTPParser     p = new HTTPParser();
      try {              
        p.execute(s, buf);
      } catch (HTTPException e) {
        check_equals("Invalid HTTP method", e.getMessage());
      }

      buf = ByteBuffer.wrap("GET / HTTP 1.10000".getBytes());
        p = new HTTPParser();
      try {
        p.execute(s, buf);
      } catch (HTTPException e) {
        check_equals("ridiculous http minor", e.getMessage());
      }

      // if no error handler is defined, behave just like the above...
      ParserSettings s0 = new ParserSettings();
     
      buf = ByteBuffer.wrap("THis is certainly not valid HTTP".getBytes());
        p = new HTTPParser();
      try {              
        p.execute(s0, buf);
      } catch (HTTPException e) {
        check_equals("Invalid HTTP method", e.getMessage());
      }

      buf = ByteBuffer.wrap("GET / HTTP 1.10000".getBytes());
        p = new HTTPParser();
      try {
        p.execute(s0, buf);
      } catch (HTTPException e) {
        check_equals("ridiculous http minor", e.getMessage());
      }
  }

  static void check_equals(Object supposed2be, Object is) {
    if (!supposed2be.equals(is)) {
      throw new RuntimeException(is + " is supposed to be "+supposed2be);
    }
  }


  public static void test () {
    p(UnitTest.class);
    testErrorFormat();
    testErrorCallback();
 
}
TOP

Related Classes of http_parser.lolevel.UnitTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.