Package org.nutz.mvc.adaptor.injector

Source Code of org.nutz.mvc.adaptor.injector.ObjectPairInjectorTest

package org.nutz.mvc.adaptor.injector;

import static org.junit.Assert.*;

import java.text.SimpleDateFormat;

import org.junit.Test;
import org.nutz.lang.Lang;
import org.nutz.mock.Mock;
import org.nutz.mock.servlet.MockHttpServletRequest;

public class ObjectPairInjectorTest {

  public static ObjectPairInjector inj(Class<?> type) {
    return new ObjectPairInjector(null, type);
  }

  public static ObjectPairInjector inj() {
    return inj(MvcTestPojo.class);
  }

  /**
   * 根据 Issue 272,如果为空串,原生类型的外覆类应该返回 null
   */
  @Test
  public void test_balnk_param_to_number() {
    // 准备数据
    MockHttpServletRequest req = Mock.servlet.request();
    req.setParameter("longValue", "  ");
    req.setParameter("num", "  ");

    // 执行
    MvcTestPojo pojo = (MvcTestPojo) inj().get(null, req, null, null);

    // 检测
    assertNull(pojo.longValue);
    assertEquals(0, pojo.num);
  }

  /**
   * 这个测试将检验在 HTTP 请求中,如果存在多个参数同名的情况,本注入器能否正确处理
   */
  @Test
  public void test_duplicated_name_params() {
    // 准备数据
    MockHttpServletRequest req = Mock.servlet.request();
    req.setParameter("num", 23);
    req.setParameterValues("names", Lang.array("A", "B", "C"));

    // 执行
    MvcTestPojo pojo = (MvcTestPojo) inj().get(null, req, null, null);

    // 检测
    assertNull(pojo.longValue);
    assertEquals(23, pojo.num);
    assertEquals(3, pojo.names.length);
    assertEquals("A", pojo.names[0]);
    assertEquals("B", pojo.names[1]);
    assertEquals("C", pojo.names[2]);
  }

  @Test
  public void test_array_to_string() {
    // 准备数据
    MockHttpServletRequest req = Mock.servlet.request();
    req.setParameterValues("str", Lang.array("A", "B", "C"));

    // 执行
    MvcTestPojo pojo = (MvcTestPojo) inj().get(null, req, null, null);

    // 检测
    assertEquals("A,B,C", pojo.str);
  }

  @Test
  public void test_string_to_string() {
    // 准备数据
    MockHttpServletRequest req = Mock.servlet.request();
    req.setParameterValues("str", Lang.array("A"));

    // 执行
    MvcTestPojo pojo = (MvcTestPojo) inj().get(null, req, null, null);

    // 检测
    assertEquals("A", pojo.str);
  }
 
  @Test
  public void test_date(){
    // 准备数据
    MockHttpServletRequest req = Mock.servlet.request();
    req.setParameter("date", "2010-01-01");
    // 执行
    MvcTestPojo pojo = (MvcTestPojo) inj().get(null, req, null, null);
   
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    System.out.println(sdf.format(pojo.date));
    assertEquals("2010-01-01", sdf.format(pojo.date));
   
    req.setParameter("date", "");
    // 执行
    MvcTestPojo pojoNull = (MvcTestPojo) inj().get(null, req, null, null);
   
    assertEquals(null, pojoNull.date);
  }

}
TOP

Related Classes of org.nutz.mvc.adaptor.injector.ObjectPairInjectorTest

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.