mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2025-06-07 07:56:12 +00:00
91 lines
4.2 KiB
C#
91 lines
4.2 KiB
C#
using CryptoExchange.Net.Objects;
|
|
using NUnit.Framework;
|
|
using NUnit.Framework.Legacy;
|
|
using System.Diagnostics;
|
|
using System.Globalization;
|
|
|
|
namespace CryptoExchange.Net.UnitTests
|
|
{
|
|
[TestFixture()]
|
|
public class ExchangeHelpersTests
|
|
{
|
|
[TestCase(0.1, 1, 0.4, 0.4)]
|
|
[TestCase(0.1, 1, 0.1, 0.1)]
|
|
[TestCase(0.1, 1, 1, 1)]
|
|
[TestCase(0.1, 1, 0.99, 0.99)]
|
|
[TestCase(0.1, 1, 0.09, 0.1)]
|
|
[TestCase(0.1, 1, 1.01, 1)]
|
|
public void ClampValueTests(decimal min, decimal max, decimal input, decimal expected)
|
|
{
|
|
var result = ExchangeHelpers.ClampValue(min, max, input);
|
|
Assert.That(expected == result);
|
|
}
|
|
|
|
[TestCase(0.1, 1, 0.1, RoundingType.Down, 0.4, 0.4)]
|
|
[TestCase(0.1, 1, 0.1, RoundingType.Down, 0.1, 0.1)]
|
|
[TestCase(0.1, 1, 0.1, RoundingType.Down, 1, 1)]
|
|
[TestCase(0.1, 1, 0.1, RoundingType.Down, 0.99, 0.9)]
|
|
[TestCase(0.1, 1, 0.1, RoundingType.Down, 0.09, 0.1)]
|
|
[TestCase(0.1, 1, 0.1, RoundingType.Down, 1.01, 1)]
|
|
[TestCase(0.1, 1, 0.01, RoundingType.Down, 0.532, 0.53)]
|
|
[TestCase(0.1, 1, 0.0001, RoundingType.Down, 0.532, 0.532)]
|
|
[TestCase(0.1, 1, 0.0001, RoundingType.Closest, 0.532, 0.532)]
|
|
[TestCase(0.1, 1, 0.0001, RoundingType.Down, 0.5516592, 0.5516)]
|
|
[TestCase(0.1, 1, 0.0001, RoundingType.Closest, 0.5516592, 0.5517)]
|
|
public void AdjustValueStepTests(decimal min, decimal max, decimal? step, RoundingType roundingType, decimal input, decimal expected)
|
|
{
|
|
var result = ExchangeHelpers.AdjustValueStep(min, max, step, roundingType, input);
|
|
Assert.That(expected == result);
|
|
}
|
|
|
|
[TestCase(0.1, 1, 2, RoundingType.Closest, 0.4, 0.4)]
|
|
[TestCase(0.1, 1, 2, RoundingType.Closest, 0.1, 0.1)]
|
|
[TestCase(0.1, 1, 2, RoundingType.Closest, 1, 1)]
|
|
[TestCase(0.1, 1, 2, RoundingType.Down, 0.555, 0.55)]
|
|
[TestCase(0.1, 1, 2, RoundingType.Closest, 0.555, 0.56)]
|
|
[TestCase(0, 100, 5, RoundingType.Closest, 23.125987, 23.126)]
|
|
[TestCase(0, 100, 5, RoundingType.Down, 23.125987, 23.125)]
|
|
[TestCase(0, 100, 8, RoundingType.Down, 0.145647985948, 0.14564798)]
|
|
[TestCase(0, 100, 8, RoundingType.Closest, 0.145647985948, 0.14564799)]
|
|
public void AdjustValuePrecisionTests(decimal min, decimal max, int? precision, RoundingType roundingType, decimal input, decimal expected)
|
|
{
|
|
var result = ExchangeHelpers.AdjustValuePrecision(min, max, precision, roundingType, input);
|
|
Assert.That(expected == result);
|
|
}
|
|
|
|
[TestCase(5, 0.1563158, 0.15631)]
|
|
[TestCase(5, 12.1789258, 12.17892)]
|
|
[TestCase(2, 12.1789258, 12.17)]
|
|
[TestCase(8, 156146.1247, 156146.1247)]
|
|
[TestCase(8, 50, 50)]
|
|
public void RoundDownTests(int decimalPlaces, decimal input, decimal expected)
|
|
{
|
|
var result = ExchangeHelpers.RoundDown(input, decimalPlaces);
|
|
Assert.That(expected == result);
|
|
}
|
|
|
|
[TestCase(0.1234560000, "0.123456")]
|
|
[TestCase(794.1230130600, "794.12301306")]
|
|
public void NormalizeTests(decimal input, string expected)
|
|
{
|
|
var result = ExchangeHelpers.Normalize(input);
|
|
Assert.That(expected == result.ToString(CultureInfo.InvariantCulture));
|
|
}
|
|
|
|
[Test]
|
|
[TestCase("123", "BKR", 32, true, "BKR|JK|123")]
|
|
[TestCase("123", "BKR", 32, false, "123")]
|
|
[TestCase("123123123123123123123123123123", "BKR", 32, true, "123123123123123123123123123123")] // 30
|
|
[TestCase("123123123123123123123123123", "BKR", 32, true, "123123123123123123123123123")] // 27
|
|
[TestCase("1231231231231231231231231", "BKR", 32, true, "BKR|JK|1231231231231231231231231")] // 25
|
|
[TestCase(null, "BKR", 32, true, null)]
|
|
public void ApplyBrokerIdTests(string clientOrderId, string brokerId, int maxLength, bool allowValueAdjustement, string expected)
|
|
{
|
|
var result = LibraryHelpers.ApplyBrokerId(clientOrderId, brokerId, maxLength, allowValueAdjustement);
|
|
|
|
if (expected != null)
|
|
Assert.That(result, Is.EqualTo(expected));
|
|
}
|
|
}
|
|
}
|