diff --git a/OpenRA.Test/OpenRA.Game/SyncTest.cs b/OpenRA.Test/OpenRA.Game/SyncTest.cs new file mode 100644 index 0000000000..f7fa71d5f2 --- /dev/null +++ b/OpenRA.Test/OpenRA.Game/SyncTest.cs @@ -0,0 +1,78 @@ +#region Copyright & License Information +/* + * Copyright 2007-2015 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation. For more information, + * see COPYING. + */ +#endregion + +using NUnit.Framework; +using OpenRA.Traits; + +namespace OpenRA.Test +{ + [TestFixture] + class SyncTest + { + class Complex : ISync + { + [Sync] + public bool Bool = true; + [Sync] + public int Int = -123456789; + [Sync] + public int2 Int2 = new int2(123, -456); + [Sync] + public CPos CPos = new CPos(123, -456); + [Sync] + public CVec CVec = new CVec(123, -456); + [Sync] + public WDist WDist = new WDist(123); + [Sync] + public WPos WPos = new WPos(123, -456, int.MaxValue); + [Sync] + public WVec WVec = new WVec(123, -456, int.MaxValue); + [Sync] + public WAngle WAngle = new WAngle(123); + [Sync] + public WRot WRot = new WRot(new WAngle(123), new WAngle(-456), new WAngle(int.MaxValue)); + [Sync] + public Target Target = Target.FromPos(new WPos(123, -456, int.MaxValue)); + } + + [TestCase(TestName = "Sync hashing has not accidentally changed")] + public void ComplexHash() + { + // If you have intentionally changed the values used for sync hashing, just update the expected value. + Assert.AreEqual(-2024026914, Sync.CalculateSyncHash(new Complex())); + } + + class Flat : ISync + { + [Sync] + int a = 123456789; + [Sync] + bool b = true; + } + + class Base : ISync + { + [Sync] + bool b = true; + } + + class Derived : Base + { + [Sync] + int a = 123456789; + } + + [TestCase(TestName = "All sync members in inheritance hierarchy are hashed")] + public void DerivedHash() + { + Assert.AreEqual(Sync.CalculateSyncHash(new Flat()), Sync.CalculateSyncHash(new Derived())); + } + } +} diff --git a/OpenRA.Test/OpenRA.Test.csproj b/OpenRA.Test/OpenRA.Test.csproj index 6c080bd939..04390022b1 100644 --- a/OpenRA.Test/OpenRA.Test.csproj +++ b/OpenRA.Test/OpenRA.Test.csproj @@ -49,6 +49,7 @@ +