diff --git a/tests/src/serverTestIfff.cpp b/tests/src/serverTestIfff.cpp
index 5d27e7c55f04704d65d8791ff0ad1ca3f2348aef..08cb4666c2dddc1474141848eef609293a8fb125 100644
--- a/tests/src/serverTestIfff.cpp
+++ b/tests/src/serverTestIfff.cpp
@@ -87,13 +87,53 @@ BOOST_AUTO_TEST_CASE(testIfffUpdate) {
     return value;
   };
 
-  sleep(2); //outch
-  auto value = extractValue();
-  // FIXME put correct vales what to expect
-  BOOST_CHECK_EQUAL(value.i1_data, 0.);
-  BOOST_CHECK_CLOSE(value.f1_data, 0., 0.0001);
-  BOOST_CHECK_CLOSE(value.f2_data, 0., 0.0001);
-  BOOST_CHECK_CLOSE(value.f3_data, 0., 0.0001);
+  auto writeIfff = [&](IFFF ifff) {
+    // we have to use the names if the correct variables
+    referenceTestApplication.versionNumber = ChimeraTK::VersionNumber();
+    DoocsServerTestHelper::doocsSet<int>("//INT/TO_DEVICE_SCALAR", ifff.i1_data);
+    DoocsServerTestHelper::doocsSet<float>("//FLOAT/TO_DEVICE_SCALAR", ifff.f1_data);
+    DoocsServerTestHelper::doocsSet<double>("//DOUBLE/TO_DEVICE_SCALAR", static_cast<double>(ifff.f2_data));
+    DoocsServerTestHelper::doocsSet<int>("//SHORT/TO_DEVICE_SCALAR", static_cast<int>(ifff.f3_data));
+    referenceTestApplication.runMainLoopOnce();
+  };
+
+  // we used SHORT/FROM_DEVICE_SCALAR for the f3_value, so only values that fit in int16_t can be used for it, no franctional numbers
+  IFFF referenceIfff;
+  referenceIfff.i1_data = 123;
+  referenceIfff.f1_data = 0.123f;
+  referenceIfff.f2_data = 12.3f;
+  referenceIfff.f3_data = -123;
+
+  writeIfff(referenceIfff);
+
+  IFFF resultIfff;
+  checkWithTimeout<int>(
+      [&]() -> int {
+        resultIfff = extractValue();
+        return resultIfff.i1_data;
+      },
+      referenceIfff.i1_data);
+  BOOST_CHECK_CLOSE(resultIfff.f1_data, referenceIfff.f1_data, 0.0001);
+  BOOST_CHECK_CLOSE(resultIfff.f2_data, referenceIfff.f2_data, 0.0001);
+  BOOST_CHECK_CLOSE(resultIfff.f3_data, referenceIfff.f3_data, 0.0001);
+
+  // change the values
+  referenceIfff.i1_data = 234;
+  referenceIfff.f1_data = 0.234f;
+  referenceIfff.f2_data = 2.34f;
+  referenceIfff.f3_data = -234;
+
+  writeIfff(referenceIfff);
+
+  checkWithTimeout<int>(
+      [&]() -> int {
+        resultIfff = extractValue();
+        return resultIfff.i1_data;
+      },
+      referenceIfff.i1_data);
+  BOOST_CHECK_CLOSE(resultIfff.f1_data, referenceIfff.f1_data, 0.0001);
+  BOOST_CHECK_CLOSE(resultIfff.f2_data, referenceIfff.f2_data, 0.0001);
+  BOOST_CHECK_CLOSE(resultIfff.f3_data, referenceIfff.f3_data, 0.0001);
 }
 
 /**********************************************************************************************************************/