public void NoBoxing() { var l1 = new List <SimpleValueOr <String> >(); var l2 = new List <SimpleValueOr <String> >(); var count = 0; for (int i = 0; i < Iterations; i++) { SimpleValueOr <String> v = _simpleValuesGenerator.GetNext(); if (v.Value.ValueType == SimpleValueType.Guid) { v = v.ToString(); } l1.Add(v); if (i % 10 == 0) { l2.Add(v); } if (l1.Count > 1_000_000) { l1.Clear(); } if (v.IsValue && v.Value.ValueType == SimpleValueType.Bool && v.Value) { count++; } } }
public void SimpleValues_AreComparedByValue() { SimpleValueOr <String> value1 = 100; SimpleValueOr <String> value2 = 100; Assert.True(value1.Equals(value2)); Assert.True(value1 == value2); Assert.False(value1 != value2); Assert.True(value1.Equals((object)value2)); Assert.AreEqual(value1.GetHashCode(), value2.GetHashCode()); }
public void Objects_AreComparedByReference() { var object1 = new TestObject(); var object2 = new TestObject(); SimpleValueOr <TestObject> value1 = object1; SimpleValueOr <TestObject> value2 = object1; SimpleValueOr <TestObject> value3 = object2; Assert.True(value1.Equals(value2)); Assert.False(value1.Equals(value3)); Assert.True(value1 == value2); Assert.False(value1 != value2); Assert.True(value1.Equals((object)value2)); Assert.AreEqual(value1.GetHashCode(), value2.GetHashCode()); Assert.AreNotEqual(value2.GetHashCode(), value3.GetHashCode()); }
public void CanCreateSimpleValueFromGenericT() { var inputValue = 1; var valueResult = Convert(inputValue); Assert.IsTrue(valueResult.IsValue); var inputReference = "Test"; var referenceResult = Convert(inputReference); Assert.IsFalse(referenceResult.IsValue); Assert.AreEqual("Test", referenceResult.Reference); SimpleValueOr <object> Convert <T>(T value) { return(SimpleValueOr <object> .Create(value)); } }
public void IEquatables_AreComparedByEquals() { var object1 = new EquatableObject(100); var object2 = new EquatableObject(100); var object3 = new EquatableObject(200); SimpleValueOr <EquatableObject> value1 = object1; SimpleValueOr <EquatableObject> value2 = object2; SimpleValueOr <EquatableObject> value3 = object3; Assert.True(value1.Equals(value2)); Assert.False(value1.Equals(value3)); Assert.True(value1 == value2); Assert.False(value1 != value2); Assert.True(value1.Equals((object)value2)); Assert.AreEqual(value1.GetHashCode(), value2.GetHashCode()); Assert.AreNotEqual(value2.GetHashCode(), value3.GetHashCode()); }