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 }