| 5 | using namespace Star; |
| 6 | |
| 7 | TEST(NetElements, DataRounding) { |
| 8 | NetElementFloat masterField1; |
| 9 | NetElementFloat masterField2; |
| 10 | |
| 11 | NetElementTop<NetElementGroup> master; |
| 12 | master.addNetElement(&masterField1); |
| 13 | master.addNetElement(&masterField2); |
| 14 | |
| 15 | masterField1.setFixedPointBase(0.1f); |
| 16 | masterField2.setFixedPointBase(0.5); |
| 17 | |
| 18 | masterField1.set(2.1999f); |
| 19 | masterField2.set(100.04); |
| 20 | |
| 21 | // Check to make sure encoded data is actually sent with the expected |
| 22 | // limitations to the client side. |
| 23 | |
| 24 | NetElementFloat slaveField1; |
| 25 | NetElementFloat slaveField2; |
| 26 | |
| 27 | NetElementTop<NetElementGroup> slave; |
| 28 | slave.addNetElement(&slaveField1); |
| 29 | slave.addNetElement(&slaveField2); |
| 30 | |
| 31 | slaveField1.setFixedPointBase(0.1f); |
| 32 | slaveField2.setFixedPointBase(0.5); |
| 33 | |
| 34 | auto masterUpdate1 = master.writeNetState(); |
| 35 | slave.readNetState(masterUpdate1.first); |
| 36 | |
| 37 | EXPECT_LT(fabs(slaveField1.get() - 2.2f), 0.00001f); |
| 38 | EXPECT_LT(fabs(slaveField2.get() - 100), 0.0000001); |
| 39 | |
| 40 | // Make sure that jittering a fixed point or limited value doesn't cause |
| 41 | // extra deltas |
| 42 | |
| 43 | masterField1.set(2.155f); |
| 44 | masterField1.set(2.24f); |
| 45 | masterField2.set(99.96); |
| 46 | masterField2.set(100.00); |
| 47 | |
| 48 | auto masterUpdate2 = master.writeNetState(masterUpdate1.second); |
| 49 | EXPECT_TRUE(masterUpdate2.first.empty()); |
| 50 | slave.readNetState(masterUpdate2.first); |
| 51 | |
| 52 | masterField1.set(10.0f); |
| 53 | masterField2.set(50.0f); |
| 54 | |
| 55 | auto masterUpdate3 = master.writeNetState(masterUpdate2.second); |
| 56 | EXPECT_FALSE(masterUpdate3.first.empty()); |
| 57 | slave.readNetState(masterUpdate3.first); |
| 58 | |
| 59 | EXPECT_LT(fabs(slaveField1.get() - 10.0f), 0.00001f); |
| 60 | EXPECT_LT(fabs(slaveField2.get() - 50.0f), 0.0000001); |
| 61 | } |
| 62 | |
| 63 | TEST(NetElements, DirectWriteRead) { |
| 64 | NetElementUInt masterField1; |
nothing calls this directly
no test coverage detected