Skip to content

Commit 67361c3

Browse files
committed
fix detecting changes on primitive types. closes #30
1 parent f08f47d commit 67361c3

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

Assets/Plugins/Colyseus/DeltaListener/Compare.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,12 @@ protected static void Generate(IndexedDictionary<string, object> mirror, Indexed
5858
var oldVal = mirror[key];
5959
var newVal = obj[key];
6060

61+
var oldValType = oldVal.GetType ();
62+
var newValType = newVal.GetType ();
63+
6164
if (
62-
(oldVal as IEnumerable) != null &&
63-
(newVal as IEnumerable) != null &&
65+
!oldValType.IsPrimitive && oldValType != typeof(string) &&
66+
!newValType.IsPrimitive && oldValType != typeof(string) &&
6467
Object.ReferenceEquals(oldVal.GetType(), newVal.GetType())
6568
)
6669
{

Assets/Tests/DeltaContainerTest.cs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,12 +137,25 @@ public void ListenRemoveArray() {
137137
var listenCalls = 0;
138138
container.Listen ("messages/:number", (DataChange change) => {
139139
listenCalls++;
140-
Assert.AreEqual("remove", change.operation);
141-
Assert.AreEqual("2", change.path["number"]);
140+
if (listenCalls == 1) {
141+
Assert.AreEqual("remove", change.operation);
142+
Assert.AreEqual("2", change.path["number"]);
143+
Assert.AreEqual(null, change.value);
144+
145+
} else if (listenCalls == 2) {
146+
Assert.AreEqual("replace", change.operation);
147+
Assert.AreEqual("1", change.path["number"]);
148+
Assert.AreEqual("three", change.value);
149+
150+
} else if (listenCalls == 3) {
151+
Assert.AreEqual("replace", change.operation);
152+
Assert.AreEqual("0", change.path["number"]);
153+
Assert.AreEqual("two", change.value);
154+
}
142155
});
143156

144157
container.Set (newData);
145-
Assert.AreEqual (1, listenCalls);
158+
Assert.AreEqual (3, listenCalls);
146159
}
147160

148161
protected IndexedDictionary<string, object> GetRawData () {

0 commit comments

Comments
 (0)