Wednesday, 14 March 2018

Hamcrest: lessThan: Check object is less than other

By using ‘lessThan’ method, you can create a matcher of Comparable object that matches when the examined object is less than the specified value.

Ex
assertThat("1 is less than 2", 1, lessThan(2));

TestApp.java
package com.sample.tests;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.lessThan;

import org.junit.Test;

public class TestApp {

 @Test
 public void testmethod() {
  assertThat("1 is less than 2", 1, lessThan(2));
 }
}

As you see the signature of lessThan method, you can call this method on any Comparable instances.

public static <T extends java.lang.Comparable<T>> org.hamcrest.Matcher<T> lessThan(T value)

Let us try to compare whether one employee is greater than or not based on their experience in the organization.

public class Employee implements Comparable<Employee> {
         ....
         ....
        
         public int compareTo(Employee emp) {
                  if (emp == null)
                           return 1;

                  return this.experience.compareTo(emp.experience);
         }

}

Since Employee class is implementing Comparable interface, we can use lessThan matcher to compare two employee objects.

Ex
Employee emp1 = new Employee(1, "Krishna", 5.6);
Employee emp2 = new Employee(2, "Chamu", 7.7);

assertThat("emp1 must < emp1", emp1, lessThan(emp2));

Find the below working application.

Employee.java
package com.sample.model;

public class Employee implements Comparable<Employee> {
 private int id;
 private String name;
 private Double experience;

 public Employee(int id, String name, Double experience) {
  this.id = id;
  this.name = name;
  this.experience = experience;
 }

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public double getExperience() {
  return experience;
 }

 public void setExperience(double experience) {
  this.experience = experience;
 }

 public int compareTo(Employee emp) {
  if (emp == null)
   return 1;

  return this.experience.compareTo(emp.experience);
 }

}


TestApp.java
package com.sample.tests;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.lessThan;

import org.junit.Test;

import com.sample.model.Employee;

public class TestApp {

 @Test
 public void testmethod() {
  Employee emp1 = new Employee(1, "Krishna", 5.6);
  Employee emp2 = new Employee(2, "Chamu", 7.7);

  assertThat("emp1 must < emp1", emp1, lessThan(emp2));

 }
}






Previous                                                 Next                                                 Home

No comments:

Post a Comment