@@ -8,6 +8,7 @@ namespace Unity.Netcode.RuntimeTests
88 public class NetworkVariableTraitsComponent : NetworkBehaviour
99 {
1010 public NetworkVariable < float > TheVariable = new NetworkVariable < float > ( ) ;
11+ public NetworkVariable < float > AnotherVariable = new NetworkVariable < float > ( ) ;
1112 }
1213
1314 public class NetworkVariableTraitsTests : NetcodeIntegrationTest
@@ -52,9 +53,10 @@ public void WhenNewValueIsLessThanThreshold_VariableIsNotSerialized()
5253
5354 TimeTravel ( 2 , 120 ) ;
5455
55- Assert . AreEqual ( 0.05f , serverComponent . TheVariable . Value ) ; ;
56- Assert . AreEqual ( 0 , testComponent . TheVariable . Value ) ; ;
56+ Assert . AreEqual ( 0.05f , serverComponent . TheVariable . Value ) ;
57+ Assert . AreEqual ( 0 , testComponent . TheVariable . Value ) ;
5758 }
59+
5860 [ Test ]
5961 public void WhenNewValueIsGreaterThanThreshold_VariableIsSerialized ( )
6062 {
@@ -66,8 +68,8 @@ public void WhenNewValueIsGreaterThanThreshold_VariableIsSerialized()
6668
6769 TimeTravel ( 2 , 120 ) ;
6870
69- Assert . AreEqual ( 0.15f , serverComponent . TheVariable . Value ) ; ;
70- Assert . AreEqual ( 0.15f , testComponent . TheVariable . Value ) ; ;
71+ Assert . AreEqual ( 0.15f , serverComponent . TheVariable . Value ) ;
72+ Assert . AreEqual ( 0.15f , testComponent . TheVariable . Value ) ;
7173 }
7274
7375 [ Test ]
@@ -83,13 +85,13 @@ public void WhenNewValueIsLessThanThresholdButMaxTimeHasPassed_VariableIsSeriali
8385
8486 TimeTravel ( 1 / 60f * 119 , 119 ) ;
8587
86- Assert . AreEqual ( 0.05f , serverComponent . TheVariable . Value ) ; ;
87- Assert . AreEqual ( 0 , testComponent . TheVariable . Value ) ; ;
88+ Assert . AreEqual ( 0.05f , serverComponent . TheVariable . Value ) ;
89+ Assert . AreEqual ( 0 , testComponent . TheVariable . Value ) ;
8890
8991 TimeTravel ( 1 / 60f * 4 , 4 ) ;
9092
91- Assert . AreEqual ( 0.05f , serverComponent . TheVariable . Value ) ; ;
92- Assert . AreEqual ( 0.05f , testComponent . TheVariable . Value ) ; ;
93+ Assert . AreEqual ( 0.05f , serverComponent . TheVariable . Value ) ;
94+ Assert . AreEqual ( 0.05f , testComponent . TheVariable . Value ) ;
9395 }
9496
9597 [ Test ]
@@ -105,13 +107,13 @@ public void WhenNewValueIsGreaterThanThresholdButMinTimeHasNotPassed_VariableIsN
105107
106108 TimeTravel ( 1 / 60f * 119 , 119 ) ;
107109
108- Assert . AreEqual ( 0.15f , serverComponent . TheVariable . Value ) ; ;
109- Assert . AreEqual ( 0 , testComponent . TheVariable . Value ) ; ;
110+ Assert . AreEqual ( 0.15f , serverComponent . TheVariable . Value ) ;
111+ Assert . AreEqual ( 0 , testComponent . TheVariable . Value ) ;
110112
111113 TimeTravel ( 1 / 60f * 4 , 4 ) ;
112114
113- Assert . AreEqual ( 0.15f , serverComponent . TheVariable . Value ) ; ;
114- Assert . AreEqual ( 0.15f , testComponent . TheVariable . Value ) ; ;
115+ Assert . AreEqual ( 0.15f , serverComponent . TheVariable . Value ) ;
116+ Assert . AreEqual ( 0.15f , testComponent . TheVariable . Value ) ;
115117 }
116118
117119 [ Test ]
@@ -126,13 +128,43 @@ public void WhenNoThresholdIsSetButMinTimeHasNotPassed_VariableIsNotSerialized()
126128
127129 TimeTravel ( 1 / 60f * 119 , 119 ) ;
128130
129- Assert . AreEqual ( 0.15f , serverComponent . TheVariable . Value ) ; ;
130- Assert . AreEqual ( 0 , testComponent . TheVariable . Value ) ; ;
131+ Assert . AreEqual ( 0.15f , serverComponent . TheVariable . Value ) ;
132+ Assert . AreEqual ( 0 , testComponent . TheVariable . Value ) ;
133+
134+ TimeTravel ( 1 / 60f * 4 , 4 ) ;
135+
136+ Assert . AreEqual ( 0.15f , serverComponent . TheVariable . Value ) ;
137+ Assert . AreEqual ( 0.15f , testComponent . TheVariable . Value ) ;
138+ }
131139
140+ [ Test ]
141+ public void WhenNonTraitsIsDirtyButTraitsIsNotReadyToSend ( )
142+ {
143+ var serverComponent = GetServerComponent ( ) ;
144+ var testComponent = GetTestComponent ( ) ;
145+ serverComponent . TheVariable . SetUpdateTraits ( new NetworkVariableUpdateTraits { MinSecondsBetweenUpdates = 2 } ) ;
146+ serverComponent . TheVariable . LastUpdateSent = m_ServerNetworkManager . NetworkTimeSystem . LocalTime ;
147+
148+ serverComponent . TheVariable . Value = 0.15f ;
149+ // Set the non-traits NetworkVariable value
150+ serverComponent . AnotherVariable . Value = 1.0f ;
151+
152+ TimeTravel ( 1 / 60f * 119 , 119 ) ;
153+ // We don't expect the traits NetworkVariable to update
154+ Assert . AreEqual ( 0.15f , serverComponent . TheVariable . Value ) ;
155+ Assert . AreEqual ( 0 , testComponent . TheVariable . Value ) ;
156+ // We should expect the non-traits NetworkVariable to update
157+ Assert . AreEqual ( 1.0f , serverComponent . AnotherVariable . Value ) ;
158+ Assert . AreEqual ( 1.0f , testComponent . AnotherVariable . Value ) ;
159+
160+ serverComponent . AnotherVariable . Value = 1.5f ;
132161 TimeTravel ( 1 / 60f * 4 , 4 ) ;
133162
134- Assert . AreEqual ( 0.15f , serverComponent . TheVariable . Value ) ; ;
135- Assert . AreEqual ( 0.15f , testComponent . TheVariable . Value ) ; ;
163+ // We should expect both NetworkVariables to update
164+ Assert . AreEqual ( 0.15f , serverComponent . TheVariable . Value ) ;
165+ Assert . AreEqual ( 0.15f , testComponent . TheVariable . Value ) ;
166+ Assert . AreEqual ( 1.5f , serverComponent . AnotherVariable . Value ) ;
167+ Assert . AreEqual ( 1.5f , testComponent . AnotherVariable . Value ) ;
136168 }
137169 }
138170}
0 commit comments