public void Equals_ValuesDifferentValue_ReturnsFalse() { var some1 = new Some<string>("value 1"); var some2 = new Some<string>("value 2"); Assert.IsFalse(some1.Equals(some2)); }
public void Equals_SomeAgainstInnerValue_ReturnsExpected(int a, int b, bool expected) { Some <int> someA = a; var result = someA.Equals(b); result.Should().Be(expected); }
public void SomeEqualsWorksOnValueTypes() { var some1 = new Some<int>(42); var some2 = new Some<int>(42); Assert.True(some1.Equals(some2)); Assert.True(some2.Equals(some1)); }
public void SomeEqualsWorkOnReferenceTypesWithCorrectEqualitySemantics() { var some1 = new Some<Item>(new Item(42)); var some2 = new Some<Item>(new Item(42)); Assert.True(some1.Equals(some2)); Assert.True(some2.Equals(some1)); }
public void Equals_SomeAgainstSome_ReturnsExpected(int a, int b, bool expected) { Some <int> someA = a; Some <int> someB = b; var result = someA.Equals(someB); result.Should().Be(expected); }
public void SomeEqualsWorkOnReferenceTypesWithCorrectEqualitySemantics() { var some1 = new Some <Item>(new Item(42)); var some2 = new Some <Item>(new Item(42)); Assert.True(some1.Equals(some2)); Assert.True(some2.Equals(some1)); }
public void SomeEqualsWorksOnValueTypes() { var some1 = new Some <int>(42); var some2 = new Some <int>(42); Assert.True(some1.Equals(some2)); Assert.True(some2.Equals(some1)); }
public void Equals_ComparisonSomeDefault_ThrowsNotInitializedException() { Some <int> someA = 5; Some <int> someB = default; Func <bool> call = () => someA.Equals(someB); call.Should().ThrowExactly <NotInitializedException>(); }
public void TwoInstancesAreNotEqualWhenTheirContainedValuesAreNotEqual(Some <Guid> m1, Some <Guid> m2) { // Arrange // Act // Assert m1.Equals((object)m2).Should().BeFalse(); }
public void Equals_SomeObjectsAreEqual_ReturnsTrue() { var value = "this is a value"; var some1 = new Some<string>(value); var some2 = new Some<string>(value); Assert.IsTrue(some1.Equals(some2)); }
public void Equals_ObjectsNotSameType_ReturnsFalse() { var value = "this is a value"; var some1 = new Some<string>(value); var some2 = new Some<object>(value); Assert.IsFalse(some1.Equals(some2)); }
public void TwoInstancesAreEqualWhenTheirContainedValuesAreEqual(Guid value) { // Arrange Some <Guid> m1 = new Some <Guid>(value); Some <Guid> m2 = new Some <Guid>(value); // Act // Assert m1.Equals(m2).Should().BeTrue(); }
/** * Removes the key associated with the given value. * * @param v * if null, will remove the key irregardless of the value; * otherwise removes only if binding contains that exact key * and value * @return null if not successful, an Option[V] indicating the previous * value otherwise */ public Option <V> rec_remove(K k, V v, int hc, int lev, INode <K, V> parent, Gen startgen, ConcurrentTrieDictionary <K, V> ct) { MainNode <K, V> m = GCAS_READ(ct); // use -Yinline! if (m is CNode <K, V> ) { CNode <K, V> cn = (CNode <K, V>)m; int idx = (int)((uint)hc >> lev) & 0x1f; int bmp = cn.bitmap; int flag = 1 << idx; if ((bmp & flag) == 0) { return(Option <V> .makeOption()); } else { int pos = JavaCompat.SparseBitcount(bmp & (flag - 1)); BasicNode sub = cn.array[pos]; Option <V> res = null; if (sub is INode <K, V> ) { INode <K, V> _in = (INode <K, V>)sub; if (startgen == _in.gen) { res = _in.rec_remove(k, v, hc, lev + 5, this, startgen, ct); } else { if (GCAS(cn, cn.renewed(startgen, ct), ct)) { res = rec_remove(k, v, hc, lev, parent, startgen, ct); } else { res = null; } } } else if (sub is SNode <K, V> ) { SNode <K, V> sn = (SNode <K, V>)sub; if (sn.hc == hc && equal(sn.k, k, ct) && (v == null || v.Equals(sn.v))) { MainNode <K, V> ncn = cn.removedAt(pos, flag, gen).toContracted(lev); if (GCAS(cn, ncn, ct)) { res = Option <V> .makeOption(sn.v); } else { res = null; } } else { res = Option <V> .makeOption(); } } if (res is None <V> || (res == null)) { return(res); } else { if (parent != null) { // never tomb at root MainNode <K, V> n = GCAS_READ(ct); if (n is TNode <K, V> ) { cleanParent(n, parent, ct, hc, lev, startgen); } } return(res); } } } else if (m is TNode <K, V> ) { clean(parent, ct, lev - 5); return(null); } else if (m is LNode <K, V> ) { LNode <K, V> ln = (LNode <K, V>)m; if (v == null) { Option <V> optv = ln.get(k); MainNode <K, V> nn = ln.removed(k, ct); if (GCAS(ln, nn, ct)) { return(optv); } else { return(null); } } else { Option <V> tmp = ln.get(k); if (tmp is Some <V> ) { Some <V> tmp1 = (Some <V>)tmp; if (tmp1.Equals(v)) { MainNode <K, V> nn = ln.removed(k, ct); if (GCAS(ln, nn, ct)) { return(tmp); } else { return(null); } } } } } throw new RuntimeException("Should not happen"); }