Tuesday 13 March 2018

Hamcrest: greaterThanOrEqualTo: check whether given object is greater than or equal to this value

By using ‘greaterThanOrEqualTo’ method, you can create a matcher of Comparable object that matches when the examined object is greater than or equal to the specified value.

Ex
assertThat("2 is >= 1", 2, greaterThanOrEqualTo(1));
assertThat("2 is >= 2", 2, greaterThanOrEqualTo(2));

Find the below working application.

TestApp.java
package com.sample.tests;

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

import org.junit.Test;

public class TestApp {

 @Test
 public void testmethod() {
  assertThat("2 is >= 1", 2, greaterThanOrEqualTo(1));
  assertThat("2 is >= 2", 2, greaterThanOrEqualTo(2));
 }
}

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

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

Let me try to compare whether one employee greater than or equal to other 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 greaterThanOrEqualTo matcher to compare two employee objects.

Ex
assertThat("emp2 is >= emp1", emp2, greaterThanOrEqualTo(emp1));
assertThat("emp2 is >= emp3", emp2, greaterThanOrEqualTo(emp3));

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.greaterThanOrEqualTo;

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", 6.1);
  Employee emp3 = new Employee(3, "Gopi", 5.6);

  assertThat("emp2 is >= emp1", emp2, greaterThanOrEqualTo(emp1));
  assertThat("emp2 is >= emp3", emp2, greaterThanOrEqualTo(emp3));
 }
}





Previous                                                 Next                                                 Home

No comments:

Post a Comment