/* * File: HardTanHFunctionTest.java * Authors: Justin Basilico * Project: Cognitive Foundry * * Copyright 2016 Cognitive Foundry. All rights reserved. */ package gov.sandia.cognition.learning.function.scalar; import java.util.Random; import org.junit.Test; import static org.junit.Assert.*; /** * Unit tests for class {@link HardTanHFunction}. * * @author Justin Basilico * @since 4.0.0 */ public class HardTanHFunctionTest extends Object { protected Random random = new Random(111114); /** * Creates a new test. */ public HardTanHFunctionTest() { super(); } /** * Test of constructors of class HardTanHFunction. */ @Test public void testConstructors() { HardTanHFunction instance = new HardTanHFunction(); assertNotNull(instance); } /** * Test of clone method, of class HardTanHFunction. */ @Test public void testClone() { HardTanHFunction instance = new HardTanHFunction(); assertNotSame(instance, instance.clone()); assertNotNull(instance.clone()); } /** * Test of evaluate method, of class HardTanHFunction. */ @Test public void testEvaluate() { HardTanHFunction instance = new HardTanHFunction(); assertEquals(0.0, instance.evaluate(0.0), 0.0); assertEquals(0.5, instance.evaluate(0.5), 0.0); assertEquals(-0.5, instance.evaluate(-0.5), 0.0); assertEquals(1.0, instance.evaluate(1.0), 0.0); assertEquals(-1.0, instance.evaluate(-1.0), 0.0); assertEquals(1.0, instance.evaluate(4.0), 0.0); assertEquals(-1.0, instance.evaluate(-4.0), 0.0); for (int i = 0; i < 10; i++) { double x = random.nextGaussian(); double y = Math.max(-1, Math.min(1, x)); assertEquals(y, instance.evaluate(x), 0.0); } } /** * Test of differentiate method, of class HardTanHFunction. */ @Test public void testDifferentiate() { HardTanHFunction instance = new HardTanHFunction(); assertEquals(1.0, instance.differentiate(0.0), 0.0); assertEquals(1.0, instance.differentiate(0.5), 0.0); assertEquals(1.0, instance.differentiate(-0.5), 0.0); assertEquals(0.0, instance.differentiate(1.0), 0.0); assertEquals(0.0, instance.differentiate(-1.0), 0.0); assertEquals(0.0, instance.differentiate(4.0), 0.0); assertEquals(0.0, instance.differentiate(-4.0), 0.0); for (int i = 0; i < 10; i++) { double x = random.nextGaussian(); if (x >= 1 || x <= -1) { assertEquals(0.0, instance.differentiate(x), 0.0); } else { assertEquals(1.0, instance.differentiate(x), 0.0); } } } /** * Test of hardSigmoid method, of class HardTanHFunction. */ @Test public void testHardSigmoid() { assertEquals(0.0, HardTanHFunction.hardTanH(0.0), 0.0); assertEquals(0.5, HardTanHFunction.hardTanH(0.5), 0.0); assertEquals(-0.5, HardTanHFunction.hardTanH(-0.5), 0.0); assertEquals(1.0, HardTanHFunction.hardTanH(1.0), 0.0); assertEquals(-1.0, HardTanHFunction.hardTanH(-1.0), 0.0); assertEquals(1.0, HardTanHFunction.hardTanH(4.0), 0.0); assertEquals(-1.0, HardTanHFunction.hardTanH(-4.0), 0.0); for (int i = 0; i < 10; i++) { double x = random.nextGaussian(); double y = Math.max(-1, Math.min(1, x)); assertEquals(y, HardTanHFunction.hardTanH(x), 0.0); } } }