diff options
Diffstat (limited to 'plugins/org.eclipse.osee.ote.core.test/src/org/eclipse/osee/ote/message/elements/Float32ElementTest.java')
-rw-r--r-- | plugins/org.eclipse.osee.ote.core.test/src/org/eclipse/osee/ote/message/elements/Float32ElementTest.java | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/plugins/org.eclipse.osee.ote.core.test/src/org/eclipse/osee/ote/message/elements/Float32ElementTest.java b/plugins/org.eclipse.osee.ote.core.test/src/org/eclipse/osee/ote/message/elements/Float32ElementTest.java new file mode 100644 index 00000000000..887e06e7a0a --- /dev/null +++ b/plugins/org.eclipse.osee.ote.core.test/src/org/eclipse/osee/ote/message/elements/Float32ElementTest.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright (c) 2004, 2007 Boeing. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Boeing - initial API and implementation + *******************************************************************************/ +package org.eclipse.osee.ote.message.elements; + +import java.util.Random; +import org.eclipse.osee.ote.message.data.HeaderData; +import org.eclipse.osee.ote.message.data.MemoryResource; +import org.eclipse.osee.ote.message.elements.Float32Element; +import org.junit.Assert; +import org.junit.Test; + +/** + * @author Roberto E. Escobar + */ +public class Float32ElementTest { + + @Test + public void testFloat32() { + final HeaderData hd = new HeaderData("test_data", new MemoryResource(new byte[64], 0, 64)); + Float32Element[] e = new Float32Element[8]; + for (int i = 0; i < e.length; i++) { + e[i] = new Float32Element(null, "Float32@" + i, hd, i * 4, 0, 31); + } + Random r = new Random(System.currentTimeMillis()); + float[] vals = new float[e.length]; + for (int i = 0; i < 1000; i++) { + generateAscending(r, e, vals, e.length); + check(e, vals, e.length); + + generateDescending(r, e, vals, e.length); + check(e, vals, e.length); + + // zeroize test + for (int z = 0; z < e.length; z += 2) { + e[z].zeroize(); + vals[z] = 0; + } + + check(e, vals, e.length); + + } + Double x = new Double(r.nextFloat()); + e[0].setValue(x); + Assert.assertTrue(e[0].getValue().equals(x)); + } + + private void generateAscending(Random r, Float32Element[] e, float[] expectedVals, int length) { + for (int i = 0; i < length; i++) { + float val = r.nextFloat(); + Float32Element el = e[i]; + el.setValue(val); + expectedVals[i] = val; + Assert.assertEquals( + String.format("set/get fail on %s: msb=%d, lsb=%d", el.getName(), el.getMsb(), el.getLsb()), + Double.valueOf(expectedVals[i]), el.getValue()); + } + } + + private void generateDescending(Random r, Float32Element[] e, float[] expectedVals, int length) { + for (int i = length - 1; i >= 0; i--) { + float val = r.nextFloat(); + Float32Element el = e[i]; + el.setValue(val); + expectedVals[i] = val; + Assert.assertEquals( + String.format("set/get fail on %s: msb=%d, lsb=%d", el.getName(), el.getMsb(), el.getLsb()), + Double.toHexString(expectedVals[i]), Double.toHexString(el.getValue())); + } + } + + private void check(Float32Element[] e, float[] expectedVals, int length) { + for (int i = 0; i < length; i++) { + Float32Element el = e[i]; + Assert.assertTrue( + String.format("corruption detect on %s: msb=%d, lsb=%d", el.getName(), el.getMsb(), el.getLsb()), + expectedVals[i] == el.getValue()); + } + } +} |