001 /* Copyright (c) 2000-2006 hamcrest.org 002 */ 003 package org.hamcrest.core; 004 005 import org.hamcrest.BaseMatcher; 006 import org.hamcrest.Description; 007 import org.hamcrest.Factory; 008 import org.hamcrest.Matcher; 009 010 011 /** 012 * Is the value the same object as another value? 013 */ 014 public class IsSame<T> extends BaseMatcher<T> { 015 private final T object; 016 017 public IsSame(T object) { 018 this.object = object; 019 } 020 021 @Override 022 public boolean matches(Object arg) { 023 return arg == object; 024 } 025 026 @Override 027 public void describeTo(Description description) { 028 description.appendText("sameInstance(") 029 .appendValue(object) 030 .appendText(")"); 031 } 032 033 /** 034 * Creates a matcher that matches only when the examined object is the same instance as 035 * the specified target object. 036 * 037 * @param target 038 * the target instance against which others should be assessed 039 */ 040 @Factory 041 public static <T> Matcher<T> sameInstance(T target) { 042 return new IsSame<T>(target); 043 } 044 045 /** 046 * Creates a matcher that matches only when the examined object is the same instance as 047 * the specified target object. 048 * 049 * @param target 050 * the target instance against which others should be assessed 051 */ 052 @Factory 053 public static <T> Matcher<T> theInstance(T target) { 054 return new IsSame<T>(target); 055 } 056 }