public KspVersionRange IntersectWith(KspVersionRange other) { if (ReferenceEquals(other, null)) { throw new ArgumentNullException("other"); } var highestLow = KspVersionBound.Highest(Lower, other.Lower); var lowestHigh = KspVersionBound.Lowest(Upper, other.Upper); return(IsEmpty(highestLow, lowestHigh) ? null : new KspVersionRange(highestLow, lowestHigh)); }
public bool IsSupersetOf(KspVersionRange other) { if (ReferenceEquals(other, null)) throw new ArgumentNullException("other"); var lowerIsOkay = Lower.Value.IsAny || (Lower.Value < other.Lower.Value) || (Lower.Value == other.Lower.Value && (Lower.Inclusive || !other.Lower.Inclusive)); var upperIsOkay = Upper.Value.IsAny || (other.Upper.Value < Upper.Value) || (other.Upper.Value == Upper.Value && (Upper.Inclusive || !other.Upper.Inclusive)); return lowerIsOkay && upperIsOkay; }
public bool IsSupersetOf(KspVersionRange other) { if (ReferenceEquals(other, null)) { throw new ArgumentNullException("other"); } var lowerIsOkay = Lower.Value.IsAny || (Lower.Value < other.Lower.Value) || (Lower.Value == other.Lower.Value && (Lower.Inclusive || !other.Lower.Inclusive)); var upperIsOkay = Upper.Value.IsAny || (other.Upper.Value < Upper.Value) || (other.Upper.Value == Upper.Value && (Upper.Inclusive || !other.Upper.Inclusive)); return(lowerIsOkay && upperIsOkay); }
public bool Compatible(KspVersion gameVersion, CkanModule module) { var gameVersionRange = gameVersion.ToVersionRange(); var moduleRange = KspVersionRange.Any; if (module.ksp_version != null) { moduleRange = module.ksp_version.ToVersionRange(); } else if (module.ksp_version_min != null || module.ksp_version_max != null) { if (module.ksp_version_min != null && module.ksp_version_max != null) { if (module.ksp_version_min <= module.ksp_version_max) { var minRange = module.ksp_version_min.ToVersionRange(); var maxRange = module.ksp_version_max.ToVersionRange(); moduleRange = new KspVersionRange(minRange.Lower, maxRange.Upper); } else { return false; } } else if (module.ksp_version_min != null) { var minRange = module.ksp_version_min.ToVersionRange(); moduleRange = new KspVersionRange(minRange.Lower, KspVersionBound.Unbounded); } else if (module.ksp_version_max != null) { var maxRange = module.ksp_version_max.ToVersionRange(); moduleRange = new KspVersionRange(KspVersionBound.Unbounded, maxRange.Upper); } } else { return true; } return moduleRange.IsSupersetOf(gameVersionRange); }
public override bool SingleVersionsCompatible(KspVersion gameVersion, CkanModule module) { var gameVersionRange = gameVersion.ToVersionRange(); var moduleRange = KspVersionRange.Any; if (module.ksp_version != null) { moduleRange = module.ksp_version.ToVersionRange(); } else if (module.ksp_version_min != null || module.ksp_version_max != null) { if (module.ksp_version_min != null && module.ksp_version_max != null) { if (module.ksp_version_min <= module.ksp_version_max) { var minRange = module.ksp_version_min.ToVersionRange(); var maxRange = module.ksp_version_max.ToVersionRange(); moduleRange = new KspVersionRange(minRange.Lower, maxRange.Upper); } else { return false; } } else if (module.ksp_version_min != null) { var minRange = module.ksp_version_min.ToVersionRange(); moduleRange = new KspVersionRange(minRange.Lower, KspVersionBound.Unbounded); } else if (module.ksp_version_max != null) { var maxRange = module.ksp_version_max.ToVersionRange(); moduleRange = new KspVersionRange(KspVersionBound.Unbounded, maxRange.Upper); } } else { return true; } return gameVersionRange.IntersectWith(moduleRange) != null; }
private static string DeriveString(KspVersionRange versionRange) { var sb = new StringBuilder(); sb.Append(versionRange.Lower.Inclusive ? '[' : '('); if (versionRange.Lower.Value != null) sb.Append(versionRange.Lower.Value); sb.Append(','); if (versionRange.Upper.Value != null) sb.Append(versionRange.Upper.Value); sb.Append(versionRange.Upper.Inclusive ? ']' : ')'); return sb.ToString(); }
private static string DeriveString(KspVersionRange versionRange) { var sb = new StringBuilder(); sb.Append(versionRange.Lower.Inclusive ? '[' : '('); if (versionRange.Lower.Value != null) { sb.Append(versionRange.Lower.Value); } sb.Append(','); if (versionRange.Upper.Value != null) { sb.Append(versionRange.Upper.Value); } sb.Append(versionRange.Upper.Inclusive ? ']' : ')'); return(sb.ToString()); }
public void ToVersionRangeWorksCorrectly(KspVersion version, KspVersionRange expectedRange) { // Act var result = version.ToVersionRange(); // Assert Assert.AreEqual(expectedRange, result); }
public void NullEqualityWorksCorrectly() { // Arrange var sut = new KspVersionRange(new KspVersionBound(), new KspVersionBound()); // Act // ReSharper disable ConditionIsAlwaysTrueOrFalse var genericEquals = sut.Equals(null); var nonGenericEquals = sut.Equals((object)null); var equalsOperatorNullLeft = null == sut; var equalsOperatorNullRight = sut == null; var notEqualsOperatorNullLeft = null != sut; var notEqualsOperatorNullRight = sut != null; // ReSharper restore ConditionIsAlwaysTrueOrFalse // ASsert Assert.IsFalse(genericEquals); Assert.IsFalse(nonGenericEquals); Assert.IsFalse(equalsOperatorNullLeft); Assert.IsFalse(equalsOperatorNullRight); Assert.IsTrue(notEqualsOperatorNullLeft); Assert.IsTrue(notEqualsOperatorNullRight); }
public void ReferenceEqualityWorksCorrectly() { // Arrange var sut = new KspVersionRange(new KspVersionBound(), new KspVersionBound()); // Act var genericEquals = sut.Equals(sut); var nonGenericEquals = sut.Equals((object)sut); // Assert Assert.IsTrue(genericEquals); Assert.IsTrue(nonGenericEquals); }
public void EqualityWorksCorrectly(KspVersionRange vr1, KspVersionRange vr2, bool areEqual) { // Act var genericEquals = vr1.Equals(vr2); var nonGenericEquals = vr1.Equals((object)vr2); var equalsOperator = vr1 == vr2; var notEqualsOperator = vr1 != vr2; var reverseEqualsOperator = vr2 == vr1; var reverseNotEqualsOperator = vr2 != vr1; // Assert Assert.AreEqual(areEqual, genericEquals); Assert.AreEqual(areEqual, nonGenericEquals); Assert.AreEqual(areEqual, equalsOperator); Assert.AreNotEqual(areEqual, notEqualsOperator); Assert.AreEqual(areEqual, reverseEqualsOperator); Assert.AreNotEqual(areEqual, reverseNotEqualsOperator); }
public void IsSupersetOfThrowsOnNullParameter() { // Arrange var sut = new KspVersionRange(new KspVersionBound(), new KspVersionBound()); // Act TestDelegate act = () => sut.IsSupersetOf(null); // Assert Assert.That(act, Throws.Exception); }
public void IsSupersetOfWorksCorrectly(KspVersionRange left, KspVersionRange right, bool expected) { // Act var result = left.IsSupersetOf(right); // Assert Assert.That(result, Is.EqualTo(expected)); }
public void ToStringWorksCorrectly(KspVersionRange vr, string expected) { // Act var result = vr.ToString(); // Assert Assert.That(result, Is.EqualTo(expected)); }
public void CtorWorksCorrectly() { // Arrange var lower = new KspVersionBound(new KspVersion(1, 2, 3, 4), false); var upper = new KspVersionBound(new KspVersion(5, 6, 7, 8), true); // Act var result = new KspVersionRange(lower, upper); // Assert Assert.That(result.Lower, Is.EqualTo(lower)); Assert.That(result.Upper, Is.EqualTo(upper)); }