001 package org.fest.assertions.internal; 002 003 import org.fest.assertions.core.AssertionInfo; 004 import org.fest.assertions.data.Offset; 005 import org.fest.util.ComparisonStrategy; 006 007 /** 008 * Base class of reusable assertions for real numbers (float and double). 009 * 010 * @author Joel Costigliola 011 */ 012 public abstract class RealNumbers<NUMBER extends Comparable<NUMBER>> extends Numbers<NUMBER> { 013 014 public RealNumbers() { 015 super(); 016 } 017 018 public RealNumbers(ComparisonStrategy comparisonStrategy) { 019 super(comparisonStrategy); 020 } 021 022 /** 023 * Verifies that the actual value is equal to {@code NaN}.<br> 024 * It does not rely on the custom comparisonStrategy (if one is set). 025 * 026 * @param info contains information about the assertion. 027 * @param actual the actual value. 028 * @throws AssertionError if the actual value is not equal to {@code NaN}. 029 */ 030 public void assertIsNaN(AssertionInfo info, NUMBER actual) { 031 assertEqualByComparison(info, actual, NaN()); 032 } 033 034 protected abstract NUMBER NaN(); 035 036 /** 037 * Verifies that the actual value is not equal to {@code NaN}. 038 * @param info contains information about the assertion. 039 * @param actual the actual value. 040 * @throws AssertionError if the actual value is equal to {@code NaN}. 041 */ 042 public void assertIsNotNaN(AssertionInfo info, NUMBER actual) { 043 assertNotEqualByComparison(info, actual, NaN()); 044 } 045 046 /** 047 * Returns true if the two floats parameter are equal within a positive offset, false otherwise.<br> 048 * It does not rely on the custom comparisonStrategy (if one is set) because using an offset is already a specific 049 * comparison strategy. 050 * @param actual the actual value. 051 * @param expected the expected value. 052 * @param offset the given positive offset. 053 * @return true if the two floats parameter are equal within a positive offset, false otherwise. 054 */ 055 protected abstract boolean isEqualTo(NUMBER actual, NUMBER expected, Offset<?> offset); 056 057 }