   assertEqual(strcmp (outBuf, "1.01"), 0);
 }
 
+test(float_comparisons)
+{
+  Value<float> floatVal1;
+  Value<float> floatVal2;
+
+  assertTrue(floatVal1 == floatVal2);
+
+  floatVal1.setValue(10.0);
+  assertTrue( floatVal1 != floatVal2);
+  assertTrue( floatVal1 > floatVal2);
+  assertTrue( floatVal1 >= floatVal2);
+  assertFalse( floatVal1 < floatVal2);
+  assertFalse( floatVal1 <= floatVal2);
+  
+  floatVal2.setValue(10.0);
+  assertTrue(floatVal1 == floatVal2);
+  assertFalse( floatVal1 > floatVal2);
+  assertTrue( floatVal1 >= floatVal2);
+  assertFalse( floatVal1 < floatVal2);
+  assertTrue( floatVal1 <= floatVal2);
+  
+}
+
+test(float_math)
+{
+  Value<float> floatVal1;
+  Value<float> floatVal2;
+  Value<float> floatVal3;
+
+  floatVal1.setValue(10.0);
+  assertEqual(floatVal1.getValue(), 10.0);
+
+  assertFalse(floatVal1 == floatVal2);
+
+  floatVal3.setValue(10.0);
+  assertTrue(floatVal1 == floatVal3);
+  
+  
+  floatVal2 = floatVal1;
+  assertTrue(floatVal1 == floatVal2);
+
+  floatVal1.setValue(20.0);
+  assertEqual(floatVal1.getValue(), 20.0);
+  assertFalse(floatVal1 == floatVal2);
+
+  assertEqual(floatVal1 + floatVal2, 30.0);
+
+  assertEqual(floatVal1 - floatVal2, 10.0);
+ 
+  assertEqual(floatVal1 * floatVal2, 200.0);
+  
+  assertEqual(floatVal1 / floatVal2, 2.0);
+}
+
+test(float_persist)
+{
+  Value<float> floatVal1;
+  assertFalse(floatVal1.hasChanged());
+  
+  floatVal1.setValue(10.0);
+  assertTrue(floatVal1.hasChanged());
+
+  floatVal1.persistValue();
+  assertFalse(floatVal1.hasChanged());
+
+  floatVal1.setValue(0.0);
+  assertTrue(floatVal1.hasChanged());
+
+  floatVal1.revertValue();
+  assertEqual(floatVal1.getValue(), 10.0);
+  assertFalse(floatVal1.hasChanged());
+
+  floatVal1.initValue(20.0);
+  assertEqual(floatVal1.getValue(), 20.0);
+  assertFalse(floatVal1.hasChanged());
+}
 
 test(int_default_is_0)
 {

  assertEqual(intVal1.getValue(), -1001);
  
  intVal1.getValueString(outBuf);
  
  assertEqual(strcmp (outBuf, "-10.01"), 0);
}





char outBuf[80];

test(bool_default_is_false)
{
  Value<bool> boolVal1;
  
  assertEqual(boolVal1.getValue(), false);
  
  boolVal1.getValueString(outBuf);
  assertEqual(strcmp (outBuf, "Off"), 0);  
}

test(bool_setValue_true_default_format)
{
  Value<bool> boolVal1;
  boolVal1.setValue(true);
  
  assertEqual(boolVal1.getValue(), true);
  
  boolVal1.getValueString(outBuf);
  assertEqual(strcmp (outBuf, "On"), 0);
}

test(bool_comparisons)
{
  Value<bool> boolVal1;
  Value<bool> boolVal2;

  assertTrue(boolVal1 == boolVal2);

  boolVal1.setValue(true);
  assertTrue( boolVal1 != boolVal2);

  boolVal2.setValue(true);
  assertTrue(boolVal1 == boolVal2);
}


test(bool_has_changed)
{
  Value<bool> boolVal1;
  assertFalse(boolVal1.hasChanged());
  
  boolVal1.setValue(true);
  assertTrue(boolVal1.hasChanged());
}


test(bool_persist)
{
  Value<bool> boolVal1;
  assertFalse(boolVal1.hasChanged());
  
  boolVal1.setValue(true);
  assertTrue(boolVal1.hasChanged());

  boolVal1.persistValue();
  assertFalse(boolVal1.hasChanged());

  boolVal1.setValue(false);
  assertTrue(boolVal1.hasChanged());

  boolVal1.revertValue();
  assertTrue(boolVal1.getValue());
  assertFalse(boolVal1.hasChanged());

  boolVal1.initValue(false);
  assertFalse(boolVal1.getValue());
  assertFalse(boolVal1.hasChanged());
}



test(float_default_is_0_0)
{
