mirror of
https://gitlab.com/Syroot/Worms.git
synced 2025-04-12 04:10:06 +03:00
- Implement IEquatable. - Fix RoundTimeSeconds not properly being parsed. - Uniquely throw ArgumentOutOfRangeException even for rounding properties. - Fix FallDamage not being stored properly. - Add tests for rounding properties and local scheme test files. - Implement equality operations for SchemeWeapon.
80 lines
3.8 KiB
C#
80 lines
3.8 KiB
C#
using System;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using Syroot.Worms.Armageddon;
|
|
using Syroot.Worms.Test.Core;
|
|
|
|
namespace Syroot.Worms.Test.Armageddon
|
|
{
|
|
/// <summary>
|
|
/// Represents a collection of tests for the <see cref="Scheme"/> class.
|
|
/// </summary>
|
|
[TestClass]
|
|
public class SchemeTests
|
|
{
|
|
// ---- METHODS (PUBLIC) ---------------------------------------------------------------------------------------
|
|
|
|
/// <summary>
|
|
/// Loads all files found in the test directory.
|
|
/// </summary>
|
|
[TestMethod]
|
|
public void TestFiles() => FileTester.Run<Scheme>(Game.Test, "*.wsc");
|
|
|
|
/// <summary>
|
|
/// Tests rounding down to the nearest valid fall damage value.
|
|
/// </summary>
|
|
[TestMethod]
|
|
public void RoundFallDamage()
|
|
{
|
|
Scheme scheme = new Scheme();
|
|
Assert.ThrowsException<ArgumentOutOfRangeException>(() => scheme.FallDamage = -1);
|
|
scheme.FallDamage = 0; Assert.AreEqual(0, scheme.FallDamage);
|
|
scheme.FallDamage = 1; Assert.AreEqual(0, scheme.FallDamage);
|
|
scheme.FallDamage = 3; Assert.AreEqual(0, scheme.FallDamage);
|
|
scheme.FallDamage = 4; Assert.AreEqual(4, scheme.FallDamage);
|
|
scheme.FallDamage = 507; Assert.AreEqual(504, scheme.FallDamage);
|
|
scheme.FallDamage = 508; Assert.AreEqual(508, scheme.FallDamage);
|
|
Assert.ThrowsException<ArgumentOutOfRangeException>(() => scheme.FallDamage = 509);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests rounding down to the nearest valid water rise rate value.
|
|
/// </summary>
|
|
[TestMethod]
|
|
public void RoundWaterRiseRate()
|
|
{
|
|
Scheme scheme = new Scheme();
|
|
scheme.WaterRiseRate = 0; Assert.AreEqual(0, scheme.WaterRiseRate);
|
|
scheme.WaterRiseRate = 1; Assert.AreEqual(0, scheme.WaterRiseRate);
|
|
scheme.WaterRiseRate = 4; Assert.AreEqual(0, scheme.WaterRiseRate);
|
|
scheme.WaterRiseRate = 5; Assert.AreEqual(5, scheme.WaterRiseRate);
|
|
scheme.WaterRiseRate = 252; Assert.AreEqual(245, scheme.WaterRiseRate);
|
|
scheme.WaterRiseRate = 253; Assert.AreEqual(253, scheme.WaterRiseRate);
|
|
Assert.ThrowsException<ArgumentOutOfRangeException>(() => scheme.WaterRiseRate = 254);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests rounding down to the nearest valid fall damage value.
|
|
/// </summary>
|
|
[TestMethod]
|
|
public void RoundObjectCount()
|
|
{
|
|
Scheme scheme = new Scheme();
|
|
Assert.ThrowsException<ArgumentOutOfRangeException>(() => scheme.ObjectCount = 0);
|
|
scheme.ObjectCount = 1; Assert.AreEqual(1, scheme.ObjectCount);
|
|
scheme.ObjectCount = 2; Assert.AreEqual(2, scheme.ObjectCount);
|
|
scheme.ObjectCount = 30; Assert.AreEqual(30, scheme.ObjectCount);
|
|
scheme.ObjectCount = 31; Assert.AreEqual(30, scheme.ObjectCount);
|
|
scheme.ObjectCount = 34; Assert.AreEqual(30, scheme.ObjectCount);
|
|
scheme.ObjectCount = 35; Assert.AreEqual(35, scheme.ObjectCount);
|
|
scheme.ObjectCount = 99; Assert.AreEqual(95, scheme.ObjectCount);
|
|
scheme.ObjectCount = 100; Assert.AreEqual(100, scheme.ObjectCount);
|
|
scheme.ObjectCount = 101; Assert.AreEqual(100, scheme.ObjectCount);
|
|
scheme.ObjectCount = 109; Assert.AreEqual(100, scheme.ObjectCount);
|
|
scheme.ObjectCount = 110; Assert.AreEqual(110, scheme.ObjectCount);
|
|
scheme.ObjectCount = 249; Assert.AreEqual(240, scheme.ObjectCount);
|
|
scheme.ObjectCount = 250; Assert.AreEqual(250, scheme.ObjectCount);
|
|
Assert.ThrowsException<ArgumentOutOfRangeException>(() => scheme.ObjectCount = 251);
|
|
}
|
|
}
|
|
}
|