package org.springside.modules.utils.mapper; import static org.assertj.core.api.Assertions.*; import java.util.List; import org.junit.Test; import org.springside.modules.utils.collection.ListUtil; import org.springside.modules.utils.mapper.BeanMapper; import ma.glasnost.orika.metadata.Type; public class BeanMapperTest { @Test public void copySingleObject() { Student student = new Student("zhang3", 20, new Teacher("li4"), ListUtil.newArrayList("chinese", "english")); StudentVO studentVo = BeanMapper.map(student, StudentVO.class); assertThat(studentVo.name).isEqualTo("zhang3"); assertThat(studentVo.getAge()).isEqualTo(20); assertThat(studentVo.getTeacher().getName()).isEqualTo("li4"); assertThat(studentVo.getCourse()).containsExactly("chinese", "english"); ////////// Type<Student> studentType = BeanMapper.getType(Student.class); Type<StudentVO> studentVoType = BeanMapper.getType(StudentVO.class); studentVo = BeanMapper.map(student, studentType, studentVoType); assertThat(studentVo.name).isEqualTo("zhang3"); assertThat(studentVo.getAge()).isEqualTo(20); assertThat(studentVo.getTeacher().getName()).isEqualTo("li4"); assertThat(studentVo.getCourse()).containsExactly("chinese", "english"); } @Test public void copyListObject() { Student student1 = new Student("zhang3", 20, new Teacher("li4"), ListUtil.newArrayList("chinese", "english")); Student student2 = new Student("zhang4", 30, new Teacher("li5"), ListUtil.newArrayList("chinese2", "english4")); Student student3 = new Student("zhang5", 40, new Teacher("li6"), ListUtil.newArrayList("chinese3", "english5")); List<Student> studentList = ListUtil.newArrayList(student1, student2, student3); List<StudentVO> studentVoList = BeanMapper.mapList(studentList, Student.class, StudentVO.class); assertThat(studentVoList).hasSize(3); StudentVO studentVo = studentVoList.get(0); assertThat(studentVo.name).isEqualTo("zhang3"); assertThat(studentVo.getAge()).isEqualTo(20); assertThat(studentVo.getTeacher().getName()).isEqualTo("li4"); assertThat(studentVo.getCourse()).containsExactly("chinese", "english"); ///////// Type<Student> studentType = BeanMapper.getType(Student.class); Type<StudentVO> studentVoType = BeanMapper.getType(StudentVO.class); studentVoList = BeanMapper.mapList(studentList, studentType, studentVoType); studentVoList = BeanMapper.mapList(studentList, Student.class, StudentVO.class); assertThat(studentVoList).hasSize(3); studentVo = studentVoList.get(0); assertThat(studentVo.name).isEqualTo("zhang3"); assertThat(studentVo.getAge()).isEqualTo(20); assertThat(studentVo.getTeacher().getName()).isEqualTo("li4"); assertThat(studentVo.getCourse()).containsExactly("chinese", "english"); } @Test public void copyArrayObject() { Student student1 = new Student("zhang3", 20, new Teacher("li4"), ListUtil.newArrayList("chinese", "english")); Student student2 = new Student("zhang4", 30, new Teacher("li5"), ListUtil.newArrayList("chinese2", "english4")); Student student3 = new Student("zhang5", 40, new Teacher("li6"), ListUtil.newArrayList("chinese3", "english5")); Student[] studentList = new Student[]{student1, student2, student3}; StudentVO[] studentVoList =new StudentVO[studentList.length]; BeanMapper.mapArray(studentVoList, studentList, StudentVO.class); assertThat(studentVoList).hasSize(3); StudentVO studentVo = studentVoList[0]; assertThat(studentVo.name).isEqualTo("zhang3"); assertThat(studentVo.getAge()).isEqualTo(20); assertThat(studentVo.getTeacher().getName()).isEqualTo("li4"); assertThat(studentVo.getCourse()).containsExactly("chinese", "english"); ///////// Type<Student> studentType = BeanMapper.getType(Student.class); Type<StudentVO> studentVoType = BeanMapper.getType(StudentVO.class); StudentVO[] studentVoList2 =new StudentVO[studentList.length]; BeanMapper.mapArray(studentVoList2, studentList,studentType, studentVoType); assertThat(studentVoList).hasSize(3); studentVo = studentVoList2[0]; assertThat(studentVo.name).isEqualTo("zhang3"); assertThat(studentVo.getAge()).isEqualTo(20); assertThat(studentVo.getTeacher().getName()).isEqualTo("li4"); assertThat(studentVo.getCourse()).containsExactly("chinese", "english"); } public static class Student { public String name; private int age; private Teacher teacher; private List<String> course = ListUtil.newArrayList(); public Student(String name, int age, Teacher teacher, List<String> course) { this.name = name; this.age = age; this.teacher = teacher; this.course = course; } public List<String> getCourse() { return course; } public void setCourse(List<String> course) { this.course = course; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Teacher getTeacher() { return teacher; } public void setTeacher(Teacher teacher) { this.teacher = teacher; } } public static class Teacher { private String name; public Teacher(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } public static class StudentVO { public String name; private int age; private TeacherVO teacher; private List<String> course = ListUtil.newArrayList(); public StudentVO(String name, int age, TeacherVO teacher, List<String> course) { this.name = name; this.age = age; this.teacher = teacher; this.course = course; } public List<String> getCourse() { return course; } public void setCourse(List<String> course) { this.course = course; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public TeacherVO getTeacher() { return teacher; } public void setTeacher(TeacherVO teacher) { this.teacher = teacher; } } public static class TeacherVO { private String name; public TeacherVO(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } } }