/*
* Copyright 2015-2016 Cel Skeggs
*
* This file is part of the CCRE, the Common Chicken Runtime Engine.
*
* The CCRE is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* The CCRE is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with the CCRE. If not, see <http://www.gnu.org/licenses/>.
*/
package ccre.channel;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import ccre.testing.CountingFloatOutput;
import ccre.util.Values;
@SuppressWarnings("javadoc")
public class FloatIOTest {
private FloatIO io;
@Before
public void setUp() throws Exception {
this.io = new FloatIO() {
private float value;
@Override
public float get() {
return value;
}
@Override
public CancelOutput onUpdate(EventOutput notify) {
fail();
return null;
}
@Override
public void set(float value) {
this.value = value;
}
};
}
@After
public void tearDown() throws Exception {
this.io = null;
}
@Test
public void testAsOutput() {
assertEquals(io, io.asOutput());
}
@Test
public void testAsInput() {
assertEquals(io, io.asInput());
}
@Test
public void testCell() {
FloatIO c = new FloatCell();
CountingFloatOutput cfo = new CountingFloatOutput();
cfo.ifExpected = true;
cfo.valueExpected = c.get();
c.send(cfo);
cfo.check();
for (float b : Values.interestingFloats) {
cfo.ifExpected = Float.floatToIntBits(b) != Float.floatToIntBits(cfo.valueExpected);
cfo.valueExpected = b;
assertTrue(c.cell(b) == c);
cfo.check();
}
}
}